【发布时间】:2015-08-15 16:14:20
【问题描述】:
所以我在 Eclipse 上创建了一个项目,我想用它创建一个 JAR 文件。 项目文件夹包含以下文件夹:
- src(包含两个包)
- JRE 系统库
- 引用的库(“jasypt-1.9.2.jar”和“json_simple-1.1.jar”)
- libs(同样:“jasypt-1.9.2.jar”和“json_simple-1.1.jar”)
- 资源(包含图像和文件)
如果我去: rclick 项目名称 -> 属性 -> Java 构建路径 -> 库
我看到两个库都已正确添加到构建路径中。
然后我去 rclick 项目的名称 -> 导出 -> JAR 文件 在这里我导出所有内容(只是为了确定..!)。然后我将 MainClass 作为入口点,然后创建 JAR 文件没有任何问题。
当我提取 JAR 文件 (registry.jar) 时,我看到它包含了它需要的所有内容: [package1、package2、META-INF、库、资源、.classpath、.project]
此外,.classpath 是正确的(至少在我看来……不是 100% 肯定!):
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="libs/jasypt-1.9.2.jar"/>
<classpathentry exported="true" kind="lib" path="libs/json_simple-1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
但是当我从命令行(Windows 和 Ubuntu)执行 registry.jar 文件时,像这样:
java -jar registry.jar
我明白了:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
at ...
at ...
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
at java.net.URLClassLoader$1.run<Unknown Source>
at ...
at ...
... lots more
程序在 Eclipse 中编译并完美运行。 我就是想不通是什么问题...
【问题讨论】:
-
我认为引用的帖子将解决您的问题。罐子里有罐子是不常见的。
-
提取你的jar文件并通过执行命令jar -xtvf
检查库是否存在 -
@RobertMoskal 谢谢,但这不是同一个问题。我正在尝试直接从 eclipse 生成 JAR,然后运行它。
-
我认为这是同样的问题。您正在生成 jar,然后尝试在 eclipse 之外运行它。在 jar 的 lib 目录中包含 jar 需要一种特殊的技术,例如使用 onejar。
标签: java eclipse maven jar noclassdeffounderror