【发布时间】:2011-12-07 03:49:39
【问题描述】:
我遇到了一个我无法理解的奇怪问题...我有一个简单的 HelloWorld jar,它是在 Eclipse 中构建的,它的类路径上有 Apache Loggings jar。我已经编写了一个脚本来运行 jar:
#!/bin/sh
export CLASSPATH=lib/*:$CLASSPATH
java -jar HelloWorld.jar
这里的目录结构是一个带有HelloWorld.jar 的主目录和一个带有commons-logging-1.1.1.jar 的lib 子目录。
运行此脚本工作正常。但是,当我将HelloWorld.jar 放入lib 目录(即在一个地方包含所有JAR)并执行java -jar lib/HelloWorld.jar 时,我得到:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
错误。为什么?!?!?!?!
我问这个是因为我在 OSX 上使用 JarBundler 为 HelloWorld 应用程序创建了一个应用程序包,并将修改后的脚本放在 MacOS 目录中,而所有库都放在 Resources/Java 目录中。修改后的脚本版本为:
#!/bin/sh
RESOURCE_DIR=$(cd "../Resources"; pwd)
export CLASSPATH=$RESOURCE_DIR/Java/*:$CLASSPATH
java -jar $RESOURCE_DIR/Java/HelloWorld.jar
我遇到了与上述相同的错误,非常感谢任何帮助理解为什么我不能这样做和/或如何解决它?
【问题讨论】: