我正在运行雪豹,我刚刚在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以便正确包含用户库的问题。
有人可以帮我吗?
提前致谢。
答案 0 :(得分:3)
您需要在类路径上列出JAR,而不仅仅是包含它们的目录。 (列出目录是为了在包层次结构中包含未归档的.class文件时)
您可能需要执行-cp /Users/myname/tempJars/libA.jar:/.../libB.jar
我相信一些(但可能不是全部)JVM支持通配符,因此-cp /Users/myname/tempJars/*
或其某些变体可能有效。