访问外部Jar中的类

时间:2010-03-06 17:36:39

标签: java installation jar

我遇到问题,让我的Java程序看到打包在外部jar中的类。我在Windows 7下运行。我将这些类嵌入一个名为ParserUtilities.jar的jar中。我使用System实用程序和Environment选项卡使用CLASSPATH变量建立了路径。 我确认CLASSPATH设置正确。当我输入echo%CLASSPATH%时,我明白了 C:\ Program Files \ Java \ externaljars \ ParserUtilities.jar这是正确的。但是当我打字的时候 java -jar Parse.jar(我的可执行文件)我收到错误 线程“main”中的异常java.lang.NoClassDefFoundError:com / artificialmed / Initialize

其他一些信息:

  1. 当我将ParserUtilities.jar放在.. \ lib \ ext目录中时,一切正常。
  2. 我正在运行java版本1.6.0_16。 Java(TM)SE运行时环境
  3. 在实验中,我输入了java -cp C:\ Program Files \ Java \ jre6 \ lib \ ext> java -cp C:\ Program Files \ Java \ externaljars \ ParserUtilities.jar
  4. 并得到此错误“无法找到主类:Files \ Java \ externaljars \ ParserUtilities.jar”但没有主类(它只是我在一堆程序中使用的类的集合)。

    我没有在环境中加载Java SDK,只是一个java JRE(这是问题吗?)。

2 个答案:

答案 0 :(得分:1)

尝试在类路径条目周围添加“”,因为目录中有一个空格(Program Files)。错误消息“Files \ Java \ externaljars \ ParserUtilities.jar”将表明这是问题。

答案 1 :(得分:1)

-jar选项上的Sun's documentationjava命令:“当您使用此选项时,JAR文件是所有用户类的源,以及其他用户类路径设置被忽略了。“我相信这意味着您的CLASSPATH环境变量以及您可能在命令行上提供的任何-cp参数都将被忽略。

因此,您有以下选择:

  1. 将所有内容打包到一个jar中,然后您可以通过运行java -jar JarWithEverything.jar
  2. 来执行它
  3. 将内容保存在单独的jar中,并在命令行中将两个jar作为参数提供,以便键入以下内容:

    java -cp "C:\Program Files\Java\externaljars\ParserUtilities.jar";"C:\Program Files\Java\externaljars\Parser.jar" com.artificialmed.Initialize

  4. 将内容保存在单独的jar中,并将一个或两个jar放入CLASSPATH环境变量中,而不是在命令行中提供它们。