【问题标题】:Cannot load daemon when creating java service创建java服务时无法加载守护进程
【发布时间】:2013-07-20 07:26:54
【问题描述】:

我正在尝试创建一个如此处所述的 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

【问题讨论】:

    标签: java daemon


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      javac -cp commons-daemon-1.0.15.jar example/Main.java
      

      【讨论】:

        【解决方案3】:

        看起来您的Main 类驻留在默认包中,但您指定example.Main 作为主类,并且没有具有这样名称的类。尝试将example.Main 替换为Main

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-15
          相关资源
          最近更新 更多