运行在雪豹的瓶子与classpath

时间:2011-02-14 05:49:19

标签: java osx-snow-leopard classpath

我正在运行雪豹,我刚刚在eclipse上编写了一个Java类。 eclipse项目引用了一个用户库,它本身指向我在系统中某处的一堆jar文件。当我通过eclipse运行应用程序时,一切顺利。 然后我将该类导出为jar文件,并尝试通过键入以下命令从终端运行它:

java - jar myApp.jar

它会抛出一个java.lang.NoClassDefFoundError异常,这意味着它无法找到我尝试引用的库。 知道我的用户库jar文件在/ Users / myname / tempJars中,我也尝试使用-cp选项提及类路径 (java -cp /Users/myname/tempJars -jar myApp.jar)或直接在清单文件中引用它。两次尝试均失败,错误相同。 这些库是Java 1.5库,所以我想我应该尝试通过JAVA_HOME环境变量引用另一个java版本。我构建了以下脚本:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:/Users/myname/tempJars

java -jar myApp.jar

再一次,没有好处。我用Google搜索了如何在雪豹中执行jar,在某些地方发现32/64位大不了甚至尝试使用-d32选项执行,但仍无济于事。 由于相同的代码在eclipse中执行得很好,我相信这只是设置JVM以便正确包含用户库的问题。

有人可以帮我吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您需要在类路径上列出JAR,而不仅仅是包含它们的目录。 (列出目录是为了在包层次结构中包含未归档的.class文件时)

您可能需要执行-cp /Users/myname/tempJars/libA.jar:/.../libB.jar

我相信一些(但可能不是全部)JVM支持通配符,因此-cp /Users/myname/tempJars/*或其某些变体可能有效。