1

I am trying to create a JAVA deamon like explained here
How to convert a java program to daemon with jsvc?

I build it with the following command

 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

and I am getting this error

 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
Community
  • 1
  • 1
ZAky
  • 1,209
  • 8
  • 22

3 Answers3

0

Looks like your Main class resides in the default package, but you specify example.Main as the main class, and there is no class with such name. Try to replace example.Main with just Main.

abacabadabacaba
  • 2,662
  • 1
  • 13
  • 18
0

Move Main.java into a directory named example and use

javac -cp commons-daemon-1.0.15.jar example/Main.java
Reimeus
  • 158,255
  • 15
  • 216
  • 276
0

I also experienced the same problem, and resolved as follows.

In this example, "Main" class is packaged by "example". The right way to make jar file is as follows.

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

Then, include the generated Main.jar into -cp option of jsvc.