2010-11-09 5 views
4

Java service Wrapper est les outils nécessaires pour fonctionner comme un service Windows, mais sont entrées en un problème avec java.lang.ClassNotFoundExceptionJava service Wrapper ne peut pas trouver la classe principale

Ma ligne de commande par défaut est: java -jar software.jar

J'ai le mettre à jour wrapper.conf pour l'exécution software.jar situé dans D: \ et il y avait une erreur, les changements que j'ai fait:

# Java Classpath (include wrapper.jar) Add class path elements as 
# needed starting from 1 
wrapper.java.classpath.1=../software.jar 
wrapper.java.classpath.2=../lib/wrapper.jar 

et que dois-je mettre pour ce paramètre? Si je en commentaire, il utiliserait Main classe

wrapper.java.mainclass=software 

Comme je déclare « logiciels » comme la classe principale, je suis l'erreur de crainte:

wrapper | Launching a JVM... 
jvm 1 | java.lang.NoClassDefFoundError: org/xsocket/connection/IHandler 
jvm 1 | Caused by: java.lang.ClassNotFoundException: org.xsocket.connection.I 
Handler 
jvm 1 |  at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
jvm 1 |  at java.security.AccessController.doPrivileged(Native Method) 
jvm 1 |  at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
jvm 1 |  at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
jvm 1 |  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 

jvm 1 |  at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
jvm 1 | Could not find the main class: xSocketServer. Program will exit. 
wrapper | JVM exited while loading the application. 
jvm 1 | Exception in thread "main" 
wrapper | CTRL-C trapped. Shutting down. 
wrapper | <-- Wrapper Stopped 

Mon software.jar contient:

META-INF 
org -- Eclipse setting 
software.class 
xsoftwareHandler.class 
xSocket.jar 

Répondre

2

Ce que je suggère est de stocker toutes les bibliothèques dans votre répertoire lib/ et ensuite ajouter les informations suivantes dans votre fichier wrapper.conf:

wrapper.java.classpath.1=../lib/*.jar 

De cette façon, le Java Service Wrapper chargera tous les fichiers dans le répertoire situé *.jar../lib/ dans le classpath, et vous ne devriez pas obtenir cette erreur à nouveau.

Bien sûr, vous pouvez également définir chaque JAR individuellement si vous préférez:

wrapper.java.classpath.1=../lib/wrapper.jar 
wrapper.java.classpath.2=../software.jar 
wrapper.java.classpath.3=../lib/xSocket.jar 
... 
+0

ok, donnez-moi 10min d'essayer. – Proyb2

+0

Oh, j'ai une erreur après cela et google pour plus d'informations, merci à l'autre exemple de wrapper, copié le pot dans le dossier lib qui le font fonctionner: http://confluence.atlassian.com/pages/viewpage.action?pageId = 91554194 – Proyb2

0

L'erreur réelle ne semble pas être la classe principale ici. Il semble être avec le "xSocket.jar" n'étant pas dans le classpath.

2

Comme vous utilisez un fichier exécutable pour lancer normalement votre application. Vous pouvez essayer la classe d'assistance WrapperJarApp. Il est conçu pour faciliter l'intégration de fichiers jar exécutables sans que vous ayez besoin de creuser dans le fichier manifeste pour le nom de la classe principale. Consultez cette page pour plus d'informations: http://wrapper.tanukisoftware.com/doc/english/integrate.html#method4

Ceci est disponible depuis la version 3.3.3.

Cheers, Leif

+0

Salut, déjà résolu mais je ne pouvais pas obtenir le service Windows pour exécuter le pot car je n'ai pas créé de code pour le service comme démarrer, arrêter et redémarrer. J'ai du temps libre. – Proyb2

Questions connexes