类路径错误 - 无法找到主类和log4j

时间:2012-02-21 05:12:22

标签: jar classpath classnotfoundexception

我正在尝试在我的shell脚本中使用此命令运行jar -

java -Dlog4j.configuration=path/to/log4j.properties -classpath path/to/log4j.jar:path/to/another.jar -cp my/jarfile/to/run/myjar.jar com.xyz.TestSuiteRunner CREATE_4_SL

但是当我运行它时,我收到错误,如图所示 -

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger

at com.xyz.TestSuiteRunner.<clinit>(TestSuiteRunner.java:27) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 1 more
Could not find the main class: com.xyz.TestSuiteRunner.  Program will exit.

在引用其他类似帖子后,我知道我可以使用清单文件创建一个可运行的jar文件,但我不想这样做。谁能告诉我在这里哪里出错?

1 个答案:

答案 0 :(得分:1)

您有-classpath-cp个开关; -cp只是-classpath的缩写,您不能拥有多个这样的缩写。最后一个是“粘贴”的,因此将找不到在第一个-classpath开关中命名的任何类。你需要将这些参数组合成一条长路径;即,

-classpath path/to/log4j.jar:path/to/another.jar:my/jarfile/to/run/myjar.jar

关于无法找到主类的错误有点像红鲱鱼;明确找到了类,它只是无法初始化,因为找不到依赖项。