运行可执行jar时发生ClassNotFoundException [英] ClassNotFoundException when running executable jar

查看:66
本文介绍了运行可执行jar时发生ClassNotFoundException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我为实用程序文件创建了一个jar文件,并将其添加为我的主项目的依赖项.当我运行 mvn install 来构建我的主项目时,在我的单元测试中使用了正确的实用程序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.

但是,当我以后使用 java -jarsupervisor.jar 运行主项目jar时,却出现了 java.lang.NoClassDefFoundError:,这是由 java引起的.lang.ClassNotFoundException:com.seeq.utilities.process.OperatingSystem .

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.

在我的单元测试中,使用了 OperatingSystem 并且测试运行良好,因此我假设在使用 java -jar 时,java找不到实用程序jar.是这个问题,我该如何解决?

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

我如何在pom.xml中添加依赖项:

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>

推荐答案

如果找不到的类位于jar中,则必须提供classpath参数;例如:

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

这篇关于运行可执行jar时发生ClassNotFoundException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆