我在让 Java 程序查看打包在外部 jar 中的类时遇到问题。我在 Windows 7 下运行。我将类嵌入到名为 ParserUtilities.jar 的 jar 中。我使用系统实用程序和环境选项卡建立了带有 CLASSPATH 变量的路径。 我确认 CLASSPATH 设置正确。当我输入 echo %CLASSPATH% 时,我看到 C:\Program Files\Java\externaljars\ParserUtilities.jar 这是正确的。但是当我打字时 java -jar Parse.jar (我的可执行文件)我收到错误 线程“main”中的异常 java.lang.NoClassDefFoundError: com/artificialmed/Initialize
一些附加信息:
- 当我将 ParserUtilities.jar 放入 ..\lib\ext 目录时,一切正常。
- 我正在运行 java 版本 1.6.0_16。 Java(TM) SE 运行时环境
- 在实验中,我输入了 java -cp C:\Program Files\Java\jre6\lib\ext>java -cp C:\Program Files\Java\externaljars\ParserUtilities.jar
并收到此错误“找不到主类:Files\Java\externaljars\ParserUtilities.jar”,但没有主类(它只是我在一堆程序中使用的类的集合)。
我的环境中没有加载 Java SDK,只有一个 java JRE(这是问题吗?)。
最佳答案
来自Sun's documentation关于 java
命令的 -jar
选项:“使用此选项时,JAR 文件是所有用户类的源,其他用户类路径设置将被忽略”。我相信这意味着您的 CLASSPATH 环境变量以及您可能在命令行上提供的任何 -cp
参数都将被忽略。
因此,您有以下选择:
- 将所有内容打包到一个 jar 中,然后可以通过运行
java -jar JarWithEverything.jar
来执行它。 将内容保存在单独的 jar 中,并在命令行上提供两个 jar 作为参数,以便您输入如下内容:
java -cp "C:\Program Files\Java\externaljars\ParserUtilities.jar";"C:\Program Files\Java\externaljars\Parser.jar"com.artificialmed.Initialize
将内容保存在单独的 jar 中,并将一个或两个 jar 放入您的
CLASSPATH
环境变量中,而不是在命令行上提供它们。
关于java - 访问外部 Jar 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2393426/