![](/img/trans.png)
[英]Java: why code packaged into a jar file prevent external classes from accessing?
[英]Accessing classes in an external Jar
我在让Java程序查看打包在外部jar中的类时遇到问题。 我在Windows 7下运行。我将类嵌入在称为ParserUtilities.jar的jar中。 我使用“系统”实用程序和“环境”选项卡使用CLASSPATH变量建立了路径。 我确认CLASSPATH设置正确。 当我键入echo%CLASSPATH%时,我看到正确的C:\\ Program Files \\ Java \\ externaljars \\ ParserUtilities.jar。 但是,当我键入java -jar Parse.jar(我的可执行文件)时,在线程“ main”中收到错误Exception。java.lang.NoClassDefFoundError:com / artificialmed / Initialize
一些其他信息:
并收到此错误“找不到主类:Files \\ Java \\ externaljars \\ ParserUtilities.jar”,但没有主类(它只是我在一系列程序中使用的类的集合)。
我没有在环境中加载Java SDK,只有Java JRE(这是问题吗?)。
尝试在类路径条目周围添加“”,因为目录(程序文件)中有空格。 错误消息“ Files \\ Java \\ externaljars \\ ParserUtilities.jar”将表明存在此问题。
从Sun的 -jar
选项到java
命令的文档 :“使用此选项时,JAR文件是所有用户类的源,而其他用户类路径设置将被忽略。” 我相信这意味着您的CLASSPATH
环境变量以及您可能在命令行上提供的任何-cp
参数都将被忽略。
因此,您有以下选择:
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
环境变量中,而不是在命令行中提供它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.