Execution "java -cp somejar classname"
Bonjour, je ne comprends pas ce qui n'est pas bon dans la façon dont j'exécute une classe (sous windows XP):
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>java -classpath ./ATest.jar:./JSAP-2.1.jar com.pkg.test.Atest
Exception in thread "main" java.lang.NoClassDefFoundError: com/pkg/test/Atest
C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>"c:\Program Files\Java\jdk1.5.0_13\bin\jar.exe" -tf Atest.jar
META-INF/
META-INF/MANIFEST.MF
com/
com/pkg/
com/pkg/test/
com/pkg/test/Atest.class
C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj> |
Je lui donne le jar ./Atest.jar qui contient bien la classe com.pkg.test.Atest !!! alors pourquoi ne la trouve-t-il pas ?
Si j'essaie une exécution sur le jar....
Code:
1 2 3 4 5 6
|
C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj>java -classpath ./JSAP-2.1.jar -jar Atest.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/martiansoftware/j
sap/StringParser
C:\Documents and Settings\Administrateur\Mes documents\Workspace\Proj> |
il trouve donc la main class que j'ai défini dans le fichier manifest, par contre se foire sur le classpath puisqu'il ne trouve pas ./JSAP-2.1.jar qui se trouve pourtant bien dans le répertoire courant.
Alors la troisième solution qui consiste à ne pas définir de classpath local et d'utiliser celui défini dans le manifest.... mais il ne trouvera pas le jar JSAP malgré le manifest suivant:
Code:
1 2 3 4 5 6 7
|
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_11-b03 (Sun Microsystems Inc.)
Built-By: someone
Main-Class: com.pkg.test.Atest
Class-Path: ./Atest.jar:./JSAP-2.1.jar |
Précisons que la variable d'environnement CLASSPATH contient ".". Si je rajoute à cette variable un dir qui contient JSAP-2.1.jar, cela ne marchera toujours pas.... pareil avec la var CLASSPATH vide d'ailleurs.
Help me....
Gal'