我正在尝试在我的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文件,但我不想这样做。谁能告诉我在这里哪里出错?
答案 0 :(得分:1)
您有-classpath
和-cp
个开关; -cp
只是-classpath
的缩写,您不能拥有多个这样的缩写。最后一个是“粘贴”的,因此将找不到在第一个-classpath
开关中命名的任何类。你需要将这些参数组合成一条长路径;即,
-classpath path/to/log4j.jar:path/to/another.jar:my/jarfile/to/run/myjar.jar
关于无法找到主类的错误有点像红鲱鱼;明确找到了类,它只是无法初始化,因为找不到依赖项。