0

我正在尝试创建一个 JAVA
守护程序,如此处所述如何使用 jsvc 将 Java 程序转换为守护程序?

我使用以下命令构建它

 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
4

3 回答 3

0

移动Main.java到一个名为example并使用的目录

javac -cp commons-daemon-1.0.15.jar example/Main.java
于 2013-07-21T13:23:25.203 回答
0

看起来您的Main类位于默认包中,但您指定example.Main为主类,并且没有具有这样名称的类。尝试example.Main用 just替换Main

于 2013-07-21T13:20:07.733 回答
0

我也遇到了同样的问题,解决如下。

在这个例子中,“Main”类被“example”打包。制作jar文件的正确方法如下。

爪哇 -d 。-cp commons-daemon.jar Main.java jar cvf Main.jar /example/*.class

然后,将生成的 Main.jar 包含到 jsvc 的 -cp 选项中。

于 2017-02-16T08:35:48.063 回答