PDA

View Full Version : [java] e file jar


carMAN
28-09-2003, 15:25
Ho implementato un' applicazione che utilizza i package mail.jar e activation.jar. Entrambi questi file sono definiti nel classpath.

Tutto funziona se avvio l'applicazione da linea di comando.
Se,invece, l'avvio dal file jar ottengo i seguenti errori:

C:\sde>java -jar Karlmail.jar
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/AuthenticationFailedException
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:1494)
at java.lang.Class.getField0(Class.java:1727)
at java.lang.Class.getDeclaredField(Class.java:1189)
at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1430
) .........etc.........

Ho inserito i files mail.jar e activation.jar nel file Karlmail.jar ma non è servito a nulla!!! Ottengo sempre lo stesso errore

Come faccio a risolvere questo problema? Devo forse inserire qualcosa nel file manifest.mf
Nel mio caso esso è:

Manifest-Version: 1.0
Created-By: 1.4.1_01 (Sun Microsystems Inc.)
Main-Class: karlmail.Karlmail


Grazie mille in anticipo...........
Carlo

PGI
28-09-2003, 16:55
Puoi provare ad impostare il classpath nel manifest con l'omonimo attributo

Class-Path: mail.jar activation.jar

Tuttavia, se in compilazione non risultano errori, è possible che ci sia qualche "pasticcio" nell'installazione di JAF.
Nel caso in cui in compilazione tutto funzioni correttamente prova a lanciare il file jar impostando prima la path di sistema nella cartella "bin" del jdk. Ad esempio:

set path=c:\j2sdk1.4.2\bin [invio]
java -jar KarlMail.jar [invio]

Per vedere cos'è successo puoi effettuare una ricerca sul disco fisso per il file "activation.jar" e vedere dov'è andato a finire. Con tutta probabilità ne troverai una sola copia nel JRE (programmi\java\jre) o nel JDK: si tratta a questo punto di copiare i file JAF presenti nel JDK e spostarli in modo che siano presenti anche nel JRE o viceversa.

Ciao.