commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Neidhart <thomas.neidh...@gmail.com>
Subject Re: [daemon] ClassNotFoundException though class in path
Date Tue, 19 Nov 2013 18:40:56 GMT
On 11/19/2013 07:35 PM, Thad Humphries wrote:
> 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"

well, I do not know what you are trying to do, but you may want to try
out the headless mode:

http://www.oracle.com/technetwork/articles/javase/headless-136834.html

Thomas

> 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
> 
> thad@Thads-Mac-mini.local:~/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 <thomas.neidhart@gmail.com
>> 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
>>>
>>> thad@Thads-Mac-mini.local:~/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: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message