创建Java服务时无法加载守护程序

时间:2013-07-21 13:16:03

标签: java daemon

我正在尝试创建一个像这里解释的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

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选项中。