类路径错误 - 无法找到主类和log4j的
问题描述:
我想在我的shell脚本来运行使用此命令一个罐子 -类路径错误 - 无法找到主类和log4j的
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文件,但我不想这样做。任何人都可以让我知道我在哪里错了吗?
答
您既有-classpath
也有-cp
开关; -cp
只是-classpath
的缩写,您不能拥有其中的一个以上。最后一个是“坚持”的,所以在第一个-classpath
开关中命名的任何类都不会被找到。您需要将这些参数合并为一条长路径;即
-classpath path/to/log4j.jar:path/to/another.jar:my/jarfile/to/run/myjar.jar
关于无法找到主类的错误是有点红鲱鱼;该类很明显,它不能被初始化,因为它的依赖关系没有找到。
工作。谢谢 – 2012-02-21 05:23:17