Java Service Wrapper是我作为Windows服务运行所需的工具,但遇到java.lang.ClassNotFoundException
的问题
我的默认命令行是:java -jar software.jar
我已更新wrapper.conf
以便在D:\中运行software.jar
并且出现错误,我所做的更改:
# 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
我应该为这个参数添加什么?如果我发表评论,它将使用Main
类
wrapper.java.mainclass=software
当我宣布“软件”为主类时,我得到了恐惧错误:
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
我的software.jar包含:
META-INF
org -- Eclipse setting
software.class
xsoftwareHandler.class
xSocket.jar
答案 0 :(得分:2)
我建议将所有库存储在lib/
目录中,然后在wrapper.conf
文件中添加以下信息:
wrapper.java.classpath.1=../lib/*.jar
这样,Java Service Wrapper
将加载位于类路径中*.jar
目录中的所有../lib/
文件,并且不应再次出现此错误。
当然,如果您愿意,也可以单独定义每个JAR:
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../software.jar
wrapper.java.classpath.3=../lib/xSocket.jar
...
答案 1 :(得分:2)
正在使用可执行jar来正常启动应用程序。您可能想尝试WrapperJarApp帮助程序类。它旨在帮助集成可执行jar,而无需深入了解主类名的Manifest文件。请查看此页面以获取更多信息: http://wrapper.tanukisoftware.com/doc/english/integrate.html#method4
从版本3.3.3开始提供此功能。
干杯, 雷夫
答案 2 :(得分:0)
实际错误似乎与Main类无关。似乎是“xSocket.jar”不在类路径中。