我正在尝试创建一个像这里解释的JAVA守护星 How to convert a java program to daemon with jsvc?
我使用以下命令构建它
javac -cp .:commons-daemon-1.0.15.jar Main.java
jar cfe ServiceDaemon.jar example.Main Main.class EchoTask.class
./service.sh start && sleep 5 && ./service.sh stop
cat /tmp/example.err
我收到此错误
java.lang.ClassNotFoundException: example.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:151)
Cannot load daemon
Service exit with a return value of 3
答案 0 :(得分:0)
看起来您的Main
类位于默认包中,但您指定example.Main
作为主类,并且没有具有此类名称的类。尝试仅使用example.Main
替换Main
。
答案 1 :(得分:0)
将Main.java
移到名为example
的目录中并使用
javac -cp commons-daemon-1.0.15.jar example/Main.java
答案 2 :(得分:0)
我也遇到了同样的问题,并解决如下。
在这个例子中," Main" class由"示例"打包。 制作jar文件的正确方法如下。
javac -d。 -cp commons-daemon.jar Main.java jar cvf Main.jar / example / * .class
然后,将生成的Main.jar包含在jsvc的<-cp选项中。