Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Rene Mouchot
Bonjour à tous,
j'essaye (en vain) de faire l'opération (plutôt basique amha) suivante :
j'ai un programme, sans package (je sais c'est pas bien ;-)), qui utilise la librairie postgres. Mon application se découpe comme suit :
classes/*.class classes/lib/pg73jdbc3.jar
mon Manifest : Manifest-Version: 1.0 Main-Class: toto Class-Path: lib/pg73jdbc3.jar
je crée mon jar en étant dans le répertoire classes : jar cmfv Manifest toto.jar *
Et là, si j'essayes de lancer mon applic :
java -jar toto.jar Class not found : org.postgresql.Driver java.lang.NullPointerException at TimeThread.run(TimeThread.java:24)
J'ai eu beau chercher un peu partout sur le net, j'ai vu un tas de gens qui avaient le même problème que moi, mais personne qui résoud vraiment.
Je pourrais désarchiver le jar de postgres et le mettre dans mes fichiers avant de faire le jar, mais je trouve cette solution assez puante.
Any suggestion ?
Alors le souci, c'est que la solution puante est la bonne :) Pour ton appli, il faut structurer comme suit : - tonjar.jar, contenant un manifest qui indique la presence la lib postgres dans un repertoire lib par exemple. - lib/postgres.jar qui contient la librairie
Ouala, -- Rene Mouchot
Bonjour à tous,
j'essaye (en vain) de faire l'opération (plutôt basique amha)
suivante :
j'ai un programme, sans package (je sais c'est pas bien ;-)), qui
utilise la librairie postgres. Mon application se découpe comme suit :
classes/*.class
classes/lib/pg73jdbc3.jar
mon Manifest :
Manifest-Version: 1.0
Main-Class: toto
Class-Path: lib/pg73jdbc3.jar
je crée mon jar en étant dans le répertoire classes :
jar cmfv Manifest toto.jar *
Et là, si j'essayes de lancer mon applic :
java -jar toto.jar
Class not found : org.postgresql.Driver
java.lang.NullPointerException
at TimeThread.run(TimeThread.java:24)
J'ai eu beau chercher un peu partout sur le net, j'ai vu un tas de gens
qui avaient le même problème que moi, mais personne qui résoud
vraiment.
Je pourrais désarchiver le jar de postgres et le mettre dans mes
fichiers avant de faire le jar, mais je trouve cette solution assez
puante.
Any suggestion ?
Alors le souci, c'est que la solution puante est la bonne :)
Pour ton appli, il faut structurer comme suit :
- tonjar.jar, contenant un manifest qui indique la presence la lib
postgres dans un repertoire lib par exemple.
- lib/postgres.jar qui contient la librairie
j'essaye (en vain) de faire l'opération (plutôt basique amha) suivante :
j'ai un programme, sans package (je sais c'est pas bien ;-)), qui utilise la librairie postgres. Mon application se découpe comme suit :
classes/*.class classes/lib/pg73jdbc3.jar
mon Manifest : Manifest-Version: 1.0 Main-Class: toto Class-Path: lib/pg73jdbc3.jar
je crée mon jar en étant dans le répertoire classes : jar cmfv Manifest toto.jar *
Et là, si j'essayes de lancer mon applic :
java -jar toto.jar Class not found : org.postgresql.Driver java.lang.NullPointerException at TimeThread.run(TimeThread.java:24)
J'ai eu beau chercher un peu partout sur le net, j'ai vu un tas de gens qui avaient le même problème que moi, mais personne qui résoud vraiment.
Je pourrais désarchiver le jar de postgres et le mettre dans mes fichiers avant de faire le jar, mais je trouve cette solution assez puante.
Any suggestion ?
Alors le souci, c'est que la solution puante est la bonne :) Pour ton appli, il faut structurer comme suit : - tonjar.jar, contenant un manifest qui indique la presence la lib postgres dans un repertoire lib par exemple. - lib/postgres.jar qui contient la librairie
Ouala, -- Rene Mouchot
Pierre Gilquin
pourquoi ne pas mettre les 2 jars independants dans ton classpath ?
java -classpath "tonAppli.jar;lib/pg73jdbc3.jar" Appli Pierre
"takezo" wrote in message news: Bonjour à tous,
j'essaye (en vain) de faire l'opération (plutôt basique amha) suivante :
j'ai un programme, sans package (je sais c'est pas bien ;-)), qui utilise la librairie postgres. Mon application se découpe comme suit :
classes/*.class classes/lib/pg73jdbc3.jar
mon Manifest : Manifest-Version: 1.0 Main-Class: toto Class-Path: lib/pg73jdbc3.jar
je crée mon jar en étant dans le répertoire classes : jar cmfv Manifest toto.jar *
Et là, si j'essayes de lancer mon applic :
java -jar toto.jar Class not found : org.postgresql.Driver java.lang.NullPointerException at TimeThread.run(TimeThread.java:24)
J'ai eu beau chercher un peu partout sur le net, j'ai vu un tas de gens qui avaient le même problème que moi, mais personne qui résoud vraiment.
Je pourrais désarchiver le jar de postgres et le mettre dans mes fichiers avant de faire le jar, mais je trouve cette solution assez puante.
Any suggestion ?
pourquoi ne pas mettre les 2 jars independants dans ton classpath ?
java -classpath "tonAppli.jar;lib/pg73jdbc3.jar" Appli
Pierre
"takezo" <oroomans@gmail.com> wrote in message
news:1127380465.039100.294790@z14g2000cwz.googlegroups.com...
Bonjour à tous,
j'essaye (en vain) de faire l'opération (plutôt basique amha)
suivante :
j'ai un programme, sans package (je sais c'est pas bien ;-)), qui
utilise la librairie postgres. Mon application se découpe comme suit :
classes/*.class
classes/lib/pg73jdbc3.jar
mon Manifest :
Manifest-Version: 1.0
Main-Class: toto
Class-Path: lib/pg73jdbc3.jar
je crée mon jar en étant dans le répertoire classes :
jar cmfv Manifest toto.jar *
Et là, si j'essayes de lancer mon applic :
java -jar toto.jar
Class not found : org.postgresql.Driver
java.lang.NullPointerException
at TimeThread.run(TimeThread.java:24)
J'ai eu beau chercher un peu partout sur le net, j'ai vu un tas de gens
qui avaient le même problème que moi, mais personne qui résoud
vraiment.
Je pourrais désarchiver le jar de postgres et le mettre dans mes
fichiers avant de faire le jar, mais je trouve cette solution assez
puante.
pourquoi ne pas mettre les 2 jars independants dans ton classpath ?
java -classpath "tonAppli.jar;lib/pg73jdbc3.jar" Appli Pierre
"takezo" wrote in message news: Bonjour à tous,
j'essaye (en vain) de faire l'opération (plutôt basique amha) suivante :
j'ai un programme, sans package (je sais c'est pas bien ;-)), qui utilise la librairie postgres. Mon application se découpe comme suit :
classes/*.class classes/lib/pg73jdbc3.jar
mon Manifest : Manifest-Version: 1.0 Main-Class: toto Class-Path: lib/pg73jdbc3.jar
je crée mon jar en étant dans le répertoire classes : jar cmfv Manifest toto.jar *
Et là, si j'essayes de lancer mon applic :
java -jar toto.jar Class not found : org.postgresql.Driver java.lang.NullPointerException at TimeThread.run(TimeThread.java:24)
J'ai eu beau chercher un peu partout sur le net, j'ai vu un tas de gens qui avaient le même problème que moi, mais personne qui résoud vraiment.
Je pourrais désarchiver le jar de postgres et le mettre dans mes fichiers avant de faire le jar, mais je trouve cette solution assez puante.
Any suggestion ?
flipouk
takezo wrote:
Je pourrais désarchiver le jar de postgres et le mettre dans mes fichiers avant de faire le jar, mais je trouve cette solution assez puante.
Extrait de : http://java.sun.com/docs/books/tutorial/jar/manifest/downman.html
Je cite : "The Class-Path header points to classes or JAR files on the local file system, not JAR files within the JAR file or classes on the network. To load classes in JAR files within a JAR file into the class path, you must write custom code to load those classes. For example, if MyJar.jar contains another JAR file called MyUtils.jar, you cannot use the Class-Path header in MyJar.jar's manifest to load classes in MyUtils.jar into the class path."
Traduction : "Le descriptif Class-Path pointe vers des fichiers JAR sur le système de fichiers local, pas sur des fichiers JAR situés dans le fichier JAR ou sur le réseau. Pour inclure les classes d'un fichier JAR dans un fichier JAR dans le classpath, vous devez écrire du code personnalisé. Par exemple, si MyJar.jar contient un autre fichier JAR MyUtils.jar, vous ne pouvez pas utiliser le descriptif Class-Path dans le manifest de MyJar.jar pour ajouter les classes de MyUtils.jar au classpath."
Moi, ce qui m'intéresserait, c'est de savoir si quelqu'un a développé en Open Source le code personnalisé mentionné ci-dessus (Netbeans, mon IDE, ne le fait pas par exemple).
Pour l'instant, je fais comme ceci : 1. Dans le répertoire lib/ de mon appli (là où il y a les jar), je crée un sous-répertoire 'exp' (pour 'expanded') dans lequel je dézippe les jar. 2. Comme je compile avec ant, j'utilise les lignes suivantes pour créer mon jar : --------------------------------------------------------------- <!-- TASK: JAR --> <target name="jar" depends="compile"> <mkdir dir="${dist}"/> <jar jarfile="${dist}/${jarname}" compress="true"> <fileset dir="${build}"/> <fileset dir="${lib}/exp"/> <manifest> <attribute name="Main-Class" value="${main}"/> <attribute name="Class-Path" value="${lib}"/> </manifest> </jar> </target> ---------------------------------------------------------------
Pour ceux que cela intéresse, j'ai créé un programme pour automatiquement dézipper les jar dans un sous répertoire 'exp'.
Si quelqu'un a une meilleure solution...
Sinon, il y a la solution déjà mentionnée par David, uberjar, à utiliser avec maven. Mais bon je n'ai pas compris grand chose : http://classworlds.codehaus.org/uberjar.html.
A+
F.
takezo wrote:
Je pourrais désarchiver le jar de postgres et le mettre dans mes
fichiers avant de faire le jar, mais je trouve cette solution assez
puante.
Extrait de :
http://java.sun.com/docs/books/tutorial/jar/manifest/downman.html
Je cite :
"The Class-Path header points to classes or JAR files on the local file
system, not JAR files within the JAR file or classes on the network. To
load classes in JAR files within a JAR file into the class path, you
must write custom code to load those classes. For example, if MyJar.jar
contains another JAR file called MyUtils.jar, you cannot use the
Class-Path header in MyJar.jar's manifest to load classes in MyUtils.jar
into the class path."
Traduction :
"Le descriptif Class-Path pointe vers des fichiers JAR sur le système de
fichiers local, pas sur des fichiers JAR situés dans le fichier JAR ou
sur le réseau. Pour inclure les classes d'un fichier JAR dans un fichier
JAR dans le classpath, vous devez écrire du code personnalisé. Par
exemple, si MyJar.jar contient un autre fichier JAR MyUtils.jar, vous ne
pouvez pas utiliser le descriptif Class-Path dans le manifest de
MyJar.jar pour ajouter les classes de MyUtils.jar au classpath."
Moi, ce qui m'intéresserait, c'est de savoir si quelqu'un a développé en
Open Source le code personnalisé mentionné ci-dessus (Netbeans, mon IDE,
ne le fait pas par exemple).
Pour l'instant, je fais comme ceci :
1. Dans le répertoire lib/ de mon appli (là où il y a les jar), je crée
un sous-répertoire 'exp' (pour 'expanded') dans lequel je dézippe les jar.
2. Comme je compile avec ant, j'utilise les lignes suivantes pour créer
mon jar :
---------------------------------------------------------------
<!-- TASK: JAR -->
<target name="jar" depends="compile">
<mkdir dir="${dist}"/>
<jar jarfile="${dist}/${jarname}" compress="true">
<fileset dir="${build}"/>
<fileset dir="${lib}/exp"/>
<manifest>
<attribute name="Main-Class" value="${main}"/>
<attribute name="Class-Path" value="${lib}"/>
</manifest>
</jar>
</target>
---------------------------------------------------------------
Pour ceux que cela intéresse, j'ai créé un programme pour
automatiquement dézipper les jar dans un sous répertoire 'exp'.
Si quelqu'un a une meilleure solution...
Sinon, il y a la solution déjà mentionnée par David, uberjar, à utiliser
avec maven. Mais bon je n'ai pas compris grand chose :
http://classworlds.codehaus.org/uberjar.html.
Je pourrais désarchiver le jar de postgres et le mettre dans mes fichiers avant de faire le jar, mais je trouve cette solution assez puante.
Extrait de : http://java.sun.com/docs/books/tutorial/jar/manifest/downman.html
Je cite : "The Class-Path header points to classes or JAR files on the local file system, not JAR files within the JAR file or classes on the network. To load classes in JAR files within a JAR file into the class path, you must write custom code to load those classes. For example, if MyJar.jar contains another JAR file called MyUtils.jar, you cannot use the Class-Path header in MyJar.jar's manifest to load classes in MyUtils.jar into the class path."
Traduction : "Le descriptif Class-Path pointe vers des fichiers JAR sur le système de fichiers local, pas sur des fichiers JAR situés dans le fichier JAR ou sur le réseau. Pour inclure les classes d'un fichier JAR dans un fichier JAR dans le classpath, vous devez écrire du code personnalisé. Par exemple, si MyJar.jar contient un autre fichier JAR MyUtils.jar, vous ne pouvez pas utiliser le descriptif Class-Path dans le manifest de MyJar.jar pour ajouter les classes de MyUtils.jar au classpath."
Moi, ce qui m'intéresserait, c'est de savoir si quelqu'un a développé en Open Source le code personnalisé mentionné ci-dessus (Netbeans, mon IDE, ne le fait pas par exemple).
Pour l'instant, je fais comme ceci : 1. Dans le répertoire lib/ de mon appli (là où il y a les jar), je crée un sous-répertoire 'exp' (pour 'expanded') dans lequel je dézippe les jar. 2. Comme je compile avec ant, j'utilise les lignes suivantes pour créer mon jar : --------------------------------------------------------------- <!-- TASK: JAR --> <target name="jar" depends="compile"> <mkdir dir="${dist}"/> <jar jarfile="${dist}/${jarname}" compress="true"> <fileset dir="${build}"/> <fileset dir="${lib}/exp"/> <manifest> <attribute name="Main-Class" value="${main}"/> <attribute name="Class-Path" value="${lib}"/> </manifest> </jar> </target> ---------------------------------------------------------------
Pour ceux que cela intéresse, j'ai créé un programme pour automatiquement dézipper les jar dans un sous répertoire 'exp'.
Si quelqu'un a une meilleure solution...
Sinon, il y a la solution déjà mentionnée par David, uberjar, à utiliser avec maven. Mais bon je n'ai pas compris grand chose : http://classworlds.codehaus.org/uberjar.html.
A+
F.
flipouk
takezo wrote:
Any suggestion ?
J'ai aussi trouvé ce truc en googlant... Mais je n'ai pas de temps de
tester. Si tu l'essayes, donne nous ton retour d'expérience :
http://one-jar.sourceforge.net/
F.
takezo wrote:
Any suggestion ?
J'ai aussi trouvé ce truc en googlant... Mais je n'ai pas de temps de
tester. Si tu l'essayes, donne nous ton retour d'expérience :