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
0 commentaires:
Enregistrer un commentaire