mercredi 7 mai 2014

Java - ClassNotFoundException lors de l'exécution jar exécutable - Stack Overflow


I created a jar file for utility files and added it as a dependency for my main project. When I run mvn install to build my main project, the correct utility jar is used in my unit tests.


However, when I later run the main project jar using java -jar supervisor.jar, I get a java.lang.NoClassDefFoundError: caused by java.lang.ClassNotFoundException: com.seeq.utilities.process.OperatingSystem.


In my unit tests, OperatingSystem is used and the tests run fine, so I am assuming that the utility jar is not found when by java when using java -jar. Is that the issue and how could I fix it?


Exception in thread "main" java.lang.NoClassDefFoundError: com/seeq/utilities/process/OperatingSystem
at com.seeq.supervisor.util.ProcessManager.buildCommand(ProcessManager.java:78)
at com.seeq.supervisor.util.ProcessManager.<init>(ProcessManager.java:27)
at com.seeq.supervisor.Supervisor.start(Supervisor.java:40)
at com.seeq.supervisor.Main.main(Main.java:21)
Caused by: java.lang.ClassNotFoundException: com.seeq.utilities.process.OperatingSystem
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:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 4 more

How I added the dependency in my pom.xml:


<dependency>
<groupId>com.seeq.utilities</groupId>
<artifactId>seeq-utilities</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/../common/libraries/java/seeq-utilities/target/seeq-utilities-1.0.jar</ systemPath>
</dependency>



If the not found class is inside a jar, you have to provide the classpath arguments; for example:


java -cp a.jar -jar supervisor.jar


I created a jar file for utility files and added it as a dependency for my main project. When I run mvn install to build my main project, the correct utility jar is used in my unit tests.


However, when I later run the main project jar using java -jar supervisor.jar, I get a java.lang.NoClassDefFoundError: caused by java.lang.ClassNotFoundException: com.seeq.utilities.process.OperatingSystem.


In my unit tests, OperatingSystem is used and the tests run fine, so I am assuming that the utility jar is not found when by java when using java -jar. Is that the issue and how could I fix it?


Exception in thread "main" java.lang.NoClassDefFoundError: com/seeq/utilities/process/OperatingSystem
at com.seeq.supervisor.util.ProcessManager.buildCommand(ProcessManager.java:78)
at com.seeq.supervisor.util.ProcessManager.<init>(ProcessManager.java:27)
at com.seeq.supervisor.Supervisor.start(Supervisor.java:40)
at com.seeq.supervisor.Main.main(Main.java:21)
Caused by: java.lang.ClassNotFoundException: com.seeq.utilities.process.OperatingSystem
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:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 4 more

How I added the dependency in my pom.xml:


<dependency>
<groupId>com.seeq.utilities</groupId>
<artifactId>seeq-utilities</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/../common/libraries/java/seeq-utilities/target/seeq-utilities-1.0.jar</ systemPath>
</dependency>


If the not found class is inside a jar, you have to provide the classpath arguments; for example:


java -cp a.jar -jar supervisor.jar

Related Posts:

0 commentaires:

Enregistrer un commentaire