Different error this time (see list below). The failure is "2013-11-19 13:10:48.376 jsvc[18273:203] Apple AWT Java VM was loaded on first thread -- can't start AWT. java.lang.InternalError: Can't start the AWT because Java was started on the first thread. Make sure StartOnFirstThread is not specified in your application's Info.plist or on the command line"
However I find no "StartOnFirstThread" in the Info.plist. Question: MultiThread spawns 3 threads of SubThread. Could that be the problem? A thread that spawns threads? MultiThread grabs AWT so SubThread's can't (though neither user AWT classes). I had been using a JVM shutdown hook<http://javapapers.com/core-java/jvm-shutdown-hook/>for MultiThread and assigning a shutdown hook to each of the SubThread instances. In my target app, I want to give the user one process to start via a shell script with the subthreads (variable in number) configured in an XML file. I just today started looking at Daemon thinking it might be a better way to go, especially as I'd also like this eventually to run as a Windows service (beat writing a *.BAT file). Debug follows: $ sudo ~/bin/jsvc -jvm server -debug -cp /Users/thad/.m2/repository/commons-daemon/commons-daemon/1.0.15/commons-daemon-1.0.15.jar:/Users/thad/jdevel/MultiThreadTest/target/MultiThread-1.0-SNAPSHOT.jar com.mindwrap.sample.thread.MultiThread once +-- DUMPING PARSED COMMAND LINE ARGUMENTS -------------- | Detach: True | Show Version: No | Show Help: No | Check Only: Disabled | Stop: False | Wait: 0 | Run as service: No | Install service: No | Remove service: No | JVM Name: "server" | Java Home: "null" | PID File: "/var/run/jsvc.pid" | User Name: "null" | Extra Options: 1 | "-Djava.class.path=/Users/thad/.m2/repository/commons-daemon/commons-daemon/1.0.15/commons-daemon-1.0.15.jar:/Users/thad/jdevel/MultiThreadTest/target/MultiThread-1.0-SNAPSHOT.jar" | Class Invoked: "com.mindwrap.sample.thread.MultiThread" | Class Arguments: 1 | "once" +------------------------------------------------------- Home not specified on command line, using environment Home not on command line or in environment, searching Attempting to locate Java Home in /System/Library/Frameworks/JavaVM.framework/Home Attempting to locate VM configuration file /System/Library/Frameworks/JavaVM.framework/Home/jre/lib/jvm.cfg Attempting to locate VM configuration file /System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg Found VM configuration file at /System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg Found VM client definition in configuration Checking library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib Found VM jvm definition in configuration Checking library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib Found VM hotspot definition in configuration Checking library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib Found VM server definition in configuration Checking library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib Found VM classic definition in configuration Checking library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclassic.dylib Cannot locate library for VM classic (skipping) Java Home located in /System/Library/Frameworks/JavaVM.framework/Home +-- DUMPING JAVA HOME STRUCTURE ------------------------ | Java Home: "/System/Library/Frameworks/JavaVM.framework/Home" | Java VM Config.: "/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg" | Found JVMs: 4 | JVM Name: "client" | "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib" | JVM Name: "jvm" | "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib" | JVM Name: "hotspot" | "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib" | JVM Name: "server" | "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib" +------------------------------------------------------- redirecting stdout to /dev/null and stderr to /dev/null Switching umask back to 022 from 077 [email protected]:~/jdevel/MultiThreadTest 630 $ Using specific JVM in /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib Attemtping to load library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib JVM library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib loaded Attemtping to load library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libverify.dylib Shell library /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libverify.dylib loaded JVM library entry point found (0x07433762) +-- DUMPING JAVA VM CREATION ARGUMENTS ----------------- | Version: 0x010004 | Ignore Unrecognized Arguments: False | Extra options: 1 | "-Djava.class.path=/Users/thad/.m2/repository/commons-daemon/commons-daemon/1.0.15/commons-daemon-1.0.15.jar:/Users/thad/jdevel/MultiThreadTest/target/MultiThread-1.0-SNAPSHOT.jar" (0x00000000) +------------------------------------------------------- | Internal options: 4 | "-Dcommons.daemon.process.id=18273" (0x00000000) | "-Dcommons.daemon.process.parent=18272" (0x00000000) | "-Dcommons.daemon.version=1.0.15-dev" (0x00000000) | "abort" (0x06ca5f50) +------------------------------------------------------- Java VM created successfully Class org/apache/commons/daemon/support/DaemonLoader found Native methods registered java_init done Daemon loading... 2013-11-19 13:10:48.376 jsvc[18273:203] Apple AWT Java VM was loaded on first thread -- can't start AWT. java.lang.InternalError: Can't start the AWT because Java was started on the first thread. Make sure StartOnFirstThread is not specified in your application's Info.plist or on the command line at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1833) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1730) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1044) at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.loadLibraries(Toolkit.java:1605) at java.awt.Toolkit.<clinit>(Toolkit.java:1627) at sun.awt.AppContext$2.run(AppContext.java:240) at sun.awt.AppContext$2.run(AppContext.java:226) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.AppContext.initMainAppContext(AppContext.java:226) at sun.awt.AppContext.access$200(AppContext.java:112) at sun.awt.AppContext$3.run(AppContext.java:306) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.AppContext.getAppContext(AppContext.java:287) at com.sun.jmx.trace.Trace.out(Trace.java:180) at com.sun.jmx.trace.Trace.isSelected(Trace.java:88) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.isTraceOn(DefaultMBeanServerInterceptor.java:1830) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:929) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:916) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312) at com.sun.jmx.mbeanserver.JmxMBeanServer$2.run(JmxMBeanServer.java:1195) at java.security.AccessController.doPrivileged(Native Method) at com.sun.jmx.mbeanserver.JmxMBeanServer.initialize(JmxMBeanServer.java:1193) at com.sun.jmx.mbeanserver.JmxMBeanServer.<init>(JmxMBeanServer.java:225) at com.sun.jmx.mbeanserver.JmxMBeanServer.<init>(JmxMBeanServer.java:170) at com.sun.jmx.mbeanserver.JmxMBeanServer.newMBeanServer(JmxMBeanServer.java:1401) at javax.management.MBeanServerBuilder.newMBeanServer(MBeanServerBuilder.java:93) at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:311) at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:214) at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:175) at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302) at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504) at com.mindwrap.sample.thread.MultiThread.<init>(MultiThread.java:26) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:357) at java.lang.Class.newInstance(Class.java:310) at org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:190) Cannot load daemon java_load failed Service exit with a return value of 3 On Tue, Nov 19, 2013 at 12:53 PM, Thomas Neidhart <[email protected] > wrote: > On 11/19/2013 06:11 PM, Thad Humphries wrote: > > I've written a class called MultiThread which implements Daemon. However > > when I try to run it with jsvc, it fails although the class is clearly > > present in my classpath. What am I not seeing? The call and debug are > below: > > > > $ sudo ~/bin/jsvc -jvm server -debug -cp > > > ~/.m2/repository/commons-daemon/commons-daemon/1.0.15/commons-daemon-1.0.15.jar:./target/MultiThread-1.0-SNAPSHOT.jar > > com.mindwrap.sample.thread.MultiThread once > > try using an absolute path to the MultiThread jar file. > > Thomas > > > Password: > > +-- DUMPING PARSED COMMAND LINE ARGUMENTS -------------- > > | Detach: True > > | Show Version: No > > | Show Help: No > > | Check Only: Disabled > > | Stop: False > > | Wait: 0 > > | Run as service: No > > | Install service: No > > | Remove service: No > > | JVM Name: "server" > > | Java Home: "null" > > | PID File: "/var/run/jsvc.pid" > > | User Name: "null" > > | Extra Options: 1 > > | > > > "-Djava.class.path=/Users/thad/.m2/repository/commons-daemon/commons-daemon/1.0.15/commons-daemon-1.0.15.jar:./target/MultiThread-1.0-SNAPSHOT.jar" > > | Class Invoked: "com.mindwrap.sample.thread.MultiThread" > > | Class Arguments: 1 > > | "once" > > +------------------------------------------------------- > > Home not specified on command line, using environment > > Home not on command line or in environment, searching > > Attempting to locate Java Home in > > /System/Library/Frameworks/JavaVM.framework/Home > > Attempting to locate VM configuration file > > /System/Library/Frameworks/JavaVM.framework/Home/jre/lib/jvm.cfg > > Attempting to locate VM configuration file > > /System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg > > Found VM configuration file at > > /System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg > > Found VM client definition in configuration > > Checking library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib > > Found VM jvm definition in configuration > > Checking library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib > > Found VM hotspot definition in configuration > > Checking library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib > > Found VM server definition in configuration > > Checking library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib > > Found VM classic definition in configuration > > Checking library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclassic.dylib > > Cannot locate library for VM classic (skipping) > > Java Home located in /System/Library/Frameworks/JavaVM.framework/Home > > +-- DUMPING JAVA HOME STRUCTURE ------------------------ > > | Java Home: "/System/Library/Frameworks/JavaVM.framework/Home" > > | Java VM Config.: > > "/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg" > > | Found JVMs: 4 > > | JVM Name: "client" > > | > > > > "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib" > > | JVM Name: "jvm" > > | > > > "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib" > > | JVM Name: "hotspot" > > | > > > > "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib" > > | JVM Name: "server" > > | > > > > "/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib" > > +------------------------------------------------------- > > redirecting stdout to /dev/null and stderr to /dev/null > > Switching umask back to 022 from 077 > > Using specific JVM in > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib > > Attemtping to load library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib > > > > [email protected]:~/jdevel/MultiThreadTest > > 621 $ JVM library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib > > loaded > > Attemtping to load library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libverify.dylib > > Shell library > > > /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libverify.dylib > > loaded > > JVM library entry point found (0x09E34762) > > +-- DUMPING JAVA VM CREATION ARGUMENTS ----------------- > > | Version: 0x010004 > > | Ignore Unrecognized Arguments: False > > | Extra options: 1 > > | > > > "-Djava.class.path=/Users/thad/.m2/repository/commons-daemon/commons-daemon/1.0.15/commons-daemon-1.0.15.jar:./target/MultiThread-1.0-SNAPSHOT.jar" > > (0x00000000) > > +------------------------------------------------------- > > | Internal options: 4 > > | "-Dcommons.daemon.process.id=17848" (0x00000000) > > | "-Dcommons.daemon.process.parent=17847" (0x00000000) > > | "-Dcommons.daemon.version=1.0.15-dev" (0x00000000) > > | "abort" (0x096a6f50) > > +------------------------------------------------------- > > Java VM created successfully > > Class org/apache/commons/daemon/support/DaemonLoader found > > Native methods registered > > java_init done > > Daemon loading... > > java.lang.ClassNotFoundException: com.mindwrap.sample.thread.MultiThread > > at java.net.URLClassLoader$1.run(URLClassLoader.java:202) > > at java.security.AccessController.doPrivileged(Native Method) > > at java.net.URLClassLoader.findClass(URLClassLoader.java:190) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > > at > > > org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:151) > > Cannot load daemon > > java_load failed > > Service exit with a return value of 3 > > > > > > As you can see, the class is in the jar: > > > > $ jar tvf target/MultiThread-1.0-SNAPSHOT.jar > > 0 Tue Nov 19 12:08:06 EST 2013 META-INF/ > > 168 Tue Nov 19 12:08:04 EST 2013 META-INF/MANIFEST.MF > > 0 Tue Nov 19 12:08:04 EST 2013 com/ > > 0 Tue Nov 19 12:08:04 EST 2013 com/mindwrap/ > > 0 Tue Nov 19 12:08:04 EST 2013 com/mindwrap/sample/ > > 0 Tue Nov 19 12:08:04 EST 2013 com/mindwrap/sample/thread/ > > 2255 Tue Nov 19 12:08:04 EST 2013 > > com/mindwrap/sample/thread/MultiThread$ShutdownHook.class > > 4659 Tue Nov 19 12:08:04 EST 2013 > > com/mindwrap/sample/thread/MultiThread.class > > 253 Tue Nov 19 12:08:04 EST 2013 > > com/mindwrap/sample/thread/ShutdownHookTest$1.class > > 951 Tue Nov 19 12:08:04 EST 2013 > > com/mindwrap/sample/thread/ShutdownHookTest$JVMShutdownHook.class > > 1191 Tue Nov 19 12:08:04 EST 2013 > > com/mindwrap/sample/thread/ShutdownHookTest.class > > 2053 Tue Nov 19 12:08:04 EST 2013 > > com/mindwrap/sample/thread/SubThread.class > > 282 Tue Nov 19 12:08:04 EST 2013 > > com/mindwrap/sample/thread/SubThreadMBean.class > > 0 Tue Nov 19 12:08:06 EST 2013 META-INF/maven/ > > 0 Tue Nov 19 12:08:06 EST 2013 > > META-INF/maven/com.mindwrap.sample.thread/ > > 0 Tue Nov 19 12:08:06 EST 2013 > > META-INF/maven/com.mindwrap.sample.thread/MultiThread/ > > 1679 Tue Nov 19 12:07:52 EST 2013 > > META-INF/maven/com.mindwrap.sample.thread/MultiThread/pom.xml > > 129 Tue Nov 19 12:08:06 EST 2013 > > META-INF/maven/com.mindwrap.sample.thread/MultiThread/pom.properties > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- "Hell hath no limits, nor is circumscrib'd In one self-place; but where we are is hell, And where hell is, there must we ever be" --Christopher Marlowe, *Doctor Faustus* (v, 121-24)
