java.lang.ClassNotFoundException 当 运行 一个 jar 及其依赖项在同一目录中

java.lang.ClassNotFoundException when running a jar and its dependency is in the same directory

在eclipse上我编译了一个jar文件。 它在映射的网络驱动器上使用多个外部存档。 项目完美运行在eclipse上

我已经将 jar 和所有依赖 jar 复制到某个 Solaris 目录中。 然后我试了

java -jar myapp.jar

它给了我以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: confmng/ConfigManager

错误消息中指定的 class 位于我已复制到与主 jar 相同目录的映射 jar 之一中。

此外,我从 solaris 对依赖 jar 所在的服务器执行了 ping 操作,结果是肯定的。

还可以看到confmng包里面的ConfigManagerclass确实在依赖jar里面:

有什么问题吗?

谢谢

您必须指定依赖项的类路径,您可以在清单类路径中指定,或者在带有 -classpath 参数的 java -jar myapp.jar 命令中指定。

示例:

java -classpath dependency1.jar;subfolder/dependency2.jar;myapp.jar package.of.your.main.Class

您还可以在 Eclipse 中导出 Runnable Jar,因此会有一些选项来处理依赖项,例如选项 "Package required libraries into generated JAR"。