【发布时间】:2013-02-05 02:45:31
【问题描述】:
这是一个shell脚本:
#!/bin/sh
cd ../../../lib
ls
MY_LIB=`pwd`
for jar in `ls $MY_LIB/*.jar`
do
CLASSPATH="$CLASSPATH:""$jar"
done
echo $CLASSPATH
cd ..
#java -jar build/libs/myproject.jar -classpath \"$CLASSPATH\"
运行此脚本将打印:
commons-codec-1.6.jar httpclient-4.2.1.jar httpcore-4.2.1.jar logback-classic-1.0.6.jar slf4j-api-1.6.0.jar
commons-logging-1.1.1.jar httpclient-cache-4.2.1.jar httpmime-4.2.1.jar logback-core-1.0.6.jar
:/home/user/mygitproject/myproject/lib/commons-codec-1.6.jar:/home/user/mygitproject/myproject/lib/commons-logging-1.1.1.jar:/home/user/mygitproject/myproject/lib/httpclient-4.2.1.jar:/home/user/mygitproject/myproject/lib/httpclient-cache-4.2.1.jar:/home/user/mygitproject/myproject/lib/httpcore-4.2.1.jar:/home/user/mygitproject/myproject/lib/httpmime-4.2.1.jar:/home/user/mygitproject/myproject/lib/logback-classic-1.0.6.jar:/home/user/mygitproject/myproject/lib/logback-core-1.0.6.jar:/home/user/mygitproject/myproject/lib/slf4j-api-1.6.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException
at com.test.MainTest.main(MainTest.java:223)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.joran.spi.JoranException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 1 more
为什么会出现异常?
类路径错了吗?
java -classpath 是否使用不正确?
【问题讨论】:
-
没有
$MY_LIB的ls命令的输出,很难说。乍一看,我会说缺少 logback,但如果没有ls,我无法确定。 -
@fge 有更新,添加 ls
-
所以,你确实有 logback。这很奇怪。另一方面,为什么同时使用 logback 和 commons-logging?
-
但是,我认为不会影响运行,在eclipse中可以正常工作