开发者

Accessing classes in an external Jar

开发者 https://www.devze.com 2022-12-21 23:09 出处:网络
I am having problems having my Java programs see classes that are packaged in an external jar.I am running under Windows 7.开发者_JAVA百科 I have the classes embedded in a jar called ParserUtilities.j

I am having problems having my Java programs see classes that are packaged in an external jar. I am running under Windows 7. 开发者_JAVA百科 I have the classes embedded in a jar called ParserUtilities.jar. I established the path with a CLASSPATH variable using the System utility and the Environment tab. I confirmed that the CLASSPATH is set correctly. When I type echo %CLASSPATH%, I see C:\Program Files\Java\externaljars\ParserUtilities.jar which is correct. But when I type java -jar Parse.jar (my executable) I get the error Exception in thread "main" java.lang.NoClassDefFoundError: com/artificialmed/Initialize

Some additional information:

  1. When I put the ParserUtilities.jar in the ..\lib\ext directory, everything works.
  2. I am running java version 1.6.0_16. Java(TM) SE Runtime Environment
  3. In experimenting, I typed java -cp C:\Program Files\Java\jre6\lib\ext>java -cp C:\Program Files\Java\externaljars\ParserUtilities.jar

and got this error "Could not find the main class: Files\Java\externaljars\ParserUtilities.jar" but there is no main class (its just a collection of classes I use in a bunch of programs).

I do not have a Java SDK loaded in the environment, just a java JRE (Is this the issue?).


From Sun's documentation on the -jar option to the java command: "When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored." I believe that means that both your CLASSPATH environment variable as well as any -cp arguments that you might provide on the command line are both going to be ignored.

So, you have the following options:

  1. Package everything into one jar, and then you can execute it by running java -jar JarWithEverything.jar.
  2. Keep things in separate jars and provide both jars as arguments on the command line, so that you type something like this:

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

  3. Keep things in separate jars and put one or both jars in your CLASSPATH environment variable instead of providing them on the command line.


Try adding "" around the classpath entry since you have a space in the directory (Program Files). The error message "Files\Java\externaljars\ParserUtilities.jar" would indicate that is the problem.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号