Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MANIFEST.MF et Class-Path:

4 réponses
Avatar
DeM Zed
Salut,

J'ai cr=E9=E9 un build.xml qui me g=E9n=E8re un application.jar dont voici
l'archi :
\mes.class.java
\ lib <=3D mes librairies connexes (commons digester, ...)
\config <=3D mes fichiers de config

J'ai g=E9n=E9r=E9 un MANIFEST.MF dont voici le contenu :
Manifest-Version: 1.2
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_05-b05 (Sun Microsystems Inc.)
Built-By: THALES SERVICES SAS
Main-Class: i2.application.demeter.client.RunClient
Specification-Title: Utilitaire d'exploitation du client DEMETER
Specification-Version: 1.4
Specification-Vendor: SCHAPI
Implementation-Title: i2.application.demeter.client
Implementation-Version: 0.1 December 8 2005
Implementation-Vendor: THALES SERVICES SAS
Sealed: false
Class-Path: lib/commons-collections-3.1.jar, lib/commons-digester-1.7.
jar, lib/commons-lang-2.1.jar, lib/commons-logging-api.jar, lib/log4j
-1.2.12.jar


Quand je fais java -jar application.jar, je me prends une
ClassNotFoundException sur l'une des classes de mes librairies
connexes.
Hors quand je met ce jar dans un r=E9pertoire o=F9 sont stock=E9e mes
libs, je n'ai pas d'erreur...

Une id=E9e?

Merci, je suis paum=E9....

4 réponses

Avatar
flipouk
DeM Zed wrote:
Salut,

J'ai créé un build.xml qui me génère un application.jar dont voici
l'archi :
mes.class.java
lib <= mes librairies connexes (commons digester, ...)
config <= mes fichiers de config

J'ai généré un MANIFEST.MF dont voici le contenu :
Manifest-Version: 1.2
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_05-b05 (Sun Microsystems Inc.)
Built-By: THALES SERVICES SAS
Main-Class: i2.application.demeter.client.RunClient
Specification-Title: Utilitaire d'exploitation du client DEMETER
Specification-Version: 1.4
Specification-Vendor: SCHAPI
Implementation-Title: i2.application.demeter.client
Implementation-Version: 0.1 December 8 2005
Implementation-Vendor: THALES SERVICES SAS
Sealed: false
Class-Path: lib/commons-collections-3.1.jar, lib/commons-digester-1.7.
jar, lib/commons-lang-2.1.jar, lib/commons-logging-api.jar, lib/log4j
-1.2.12.jar


Quand je fais java -jar application.jar, je me prends une
ClassNotFoundException sur l'une des classes de mes librairies
connexes.
Hors quand je met ce jar dans un répertoire où sont stockée mes
libs, je n'ai pas d'erreur...

Une idée?

Merci, je suis paumé....



Tu ne peux pas mettre des jars de libraries dans ton jar. Enfin, tu
peux, mais ils ne sont pas lues.

Si ca fonctionne quand tu es dans ton répertoire, c'est parce que ton
jar lit les jars du répertoire ./lib, pas les jars qui sont dans le jar.
La solution ? Déjarrer tes libs dans ton jar, ou alors toujours lancer
ton appli dans un répertoire contenant un sous-répertoire lib qui inclut
tes libraries :(

Comme je vois que tu utilises ant, voici comment je fais moi (extrait
d'un de mes build.xml) :

----------------8<-------------------------------------
<!-- TASK: INCLLIB -->
<target name="incllib" depends="compile">
<!-- Unzips the jar files in the lib/ directory to the build
directory to include the external libraries -->
<unzip dest="${build}">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
</unzip>
</target>
---------------->8-------------------------------------

Tu peux aussi bien sûr le faire à la main avec jar -xf

Si tu mets tes classes directement dans le jar, pas besoin de Class-Path
dans le Manifest.

Je ne suis pas super enthousiaste avec cette solution, mais bon je n'ai
rien trouvé de mieux jusqu'à présent.

F.

Avatar
Christophe Roudet
onejar (http://one-jar.sourceforge.net/) peut faire l'affaire.

Christophe

"flipouk" wrote in message
news:43993c49$0$29566$
DeM Zed wrote:
Salut,

J'ai créé un build.xml qui me génère un application.jar dont voici
l'archi :
mes.class.java
lib <= mes librairies connexes (commons digester, ...)
config <= mes fichiers de config

J'ai généré un MANIFEST.MF dont voici le contenu :
Manifest-Version: 1.2
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_05-b05 (Sun Microsystems Inc.)
Built-By: THALES SERVICES SAS
Main-Class: i2.application.demeter.client.RunClient
Specification-Title: Utilitaire d'exploitation du client DEMETER
Specification-Version: 1.4
Specification-Vendor: SCHAPI
Implementation-Title: i2.application.demeter.client
Implementation-Version: 0.1 December 8 2005
Implementation-Vendor: THALES SERVICES SAS
Sealed: false
Class-Path: lib/commons-collections-3.1.jar, lib/commons-digester-1.7.
jar, lib/commons-lang-2.1.jar, lib/commons-logging-api.jar, lib/log4j
-1.2.12.jar


Quand je fais java -jar application.jar, je me prends une
ClassNotFoundException sur l'une des classes de mes librairies
connexes.
Hors quand je met ce jar dans un répertoire où sont stockée mes
libs, je n'ai pas d'erreur...

Une idée?

Merci, je suis paumé....



Tu ne peux pas mettre des jars de libraries dans ton jar. Enfin, tu peux,
mais ils ne sont pas lues.

Si ca fonctionne quand tu es dans ton répertoire, c'est parce que ton jar
lit les jars du répertoire ./lib, pas les jars qui sont dans le jar.
La solution ? Déjarrer tes libs dans ton jar, ou alors toujours lancer ton
appli dans un répertoire contenant un sous-répertoire lib qui inclut tes
libraries :(

Comme je vois que tu utilises ant, voici comment je fais moi (extrait d'un
de mes build.xml) :

----------------8<-------------------------------------
<!-- TASK: INCLLIB -->
<target name="incllib" depends="compile">
<!-- Unzips the jar files in the lib/ directory to the build
directory to include the external libraries -->
<unzip dest="${build}">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
</unzip>
</target>
---------------->8-------------------------------------

Tu peux aussi bien sûr le faire à la main avec jar -xf

Si tu mets tes classes directement dans le jar, pas besoin de Class-Path
dans le Manifest.

Je ne suis pas super enthousiaste avec cette solution, mais bon je n'ai
rien trouvé de mieux jusqu'à présent.

F.



Avatar
flipouk
Christophe Roudet wrote:
onejar (http://one-jar.sourceforge.net/) peut faire l'affaire.

Christophe


C'est effectivement très intéressant. Merci beaucoup pour ce lien !

F.

Avatar
kult
DeM Zed a écrit le 08/12/2005 à 16h25 :
Salut,

J'ai créé un build.xml qui me génère un application.jar dont voici
l'archi :
mes.class.java
lib <= mes librairies connexes (commons digester, ...)
config <= mes fichiers de config

J'ai généré un MANIFEST.MF dont voici le contenu :
Manifest-Version: 1.2
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_05-b05 (Sun Microsystems Inc.)
Built-By: THALES SERVICES SAS
Main-Class: i2.application.demeter.client.RunClient
Specification-Title: Utilitaire d'exploitation du client DEMETER
Specification-Version: 1.4
Specification-Vendor: SCHAPI
Implementation-Title: i2.application.demeter.client
Implementation-Version: 0.1 December 8 2005
Implementation-Vendor: THALES SERVICES SAS
Sealed: false
Class-Path: lib/commons-collections-3.1.jar, lib/commons-digester-1.7.
jar, lib/commons-lang-2.1.jar, lib/commons-logging-api.jar, lib/log4j
-1.2.12.jar


Quand je fais java -jar application.jar, je me prends une
ClassNotFoundException sur l'une des classes de mes librairies
connexes.
Hors quand je met ce jar dans un répertoire où sont stockée mes
libs, je n'ai pas d'erreur...

Une idée?

Merci, je suis paumé....


in my main, your Class-Path elements (jar file) must be seperated by only space not comma