Java 使用类路径在雪豹上运行Jar
我正在运行SnowLeopard,我刚刚在eclipse上编写了一个Java类。eclipse项目引用了一个用户库,它本身指向我在系统中的某个地方得到的一堆jar文件。当我通过eclipse运行应用程序时,一切都很顺利。 然后我将该类导出为jar文件,并尝试通过键入以下内容从终端运行它:Java 使用类路径在雪豹上运行Jar,java,osx-snow-leopard,classpath,Java,Osx Snow Leopard,Classpath,我正在运行SnowLeopard,我刚刚在eclipse上编写了一个Java类。eclipse项目引用了一个用户库,它本身指向我在系统中的某个地方得到的一堆jar文件。当我通过eclipse运行应用程序时,一切都很顺利。 然后我将该类导出为jar文件,并尝试通过键入以下内容从终端运行它: java - jar myApp.jar 它抛出java.lang.NoClassDefFoundError异常,这意味着它找不到我尝试引用的库。 知道我的用户库jar文件位于/Users/myname/te
java - jar myApp.jar
它抛出java.lang.NoClassDefFoundError异常,这意味着它找不到我尝试引用的库。
知道我的用户库jar文件位于/Users/myname/tempJars中,我还尝试使用-cp选项提及类路径
(java-cp/Users/myname/tempJars-jar myApp.jar)
或直接在清单文件中引用它。两次尝试均失败,错误相同。
这些库是Java1.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
再说一次,不好。我在谷歌上搜索了如何在SnowLeopard中执行JAR,在某些地方发现了32/64位的大问题,甚至尝试使用-d32选项执行,但仍然没有结果。
由于相同的代码在eclipse中执行得很好,我非常确信这只是一个设置JVM的问题,以便它正确地包含用户库
有人能帮我吗
提前感谢。您需要在类路径上列出JAR本身,而不仅仅是包含它们的目录。(列出目录是为了在包层次结构中有未归档的.class文件时使用) 您可能需要执行
-cp/Users/myname/tempJars/libA.jar:/…/libB.jar
我相信一些(但可能不是全部)JVM支持通配符,因此
-cp/Users/myname/tempJars/*
或其变体可能会起作用。您需要在类路径上列出jar本身,而不仅仅是包含它们的目录。(列出目录是为了在包层次结构中有未归档的.class文件时使用)
您可能需要执行-cp/Users/myname/tempJars/libA.jar:/…/libB.jar
我相信一些(但可能不是全部)JVM支持通配符,因此
-cp/Users/myname/tempJars/*
或其变体可能会起作用。感谢您的回复,单独添加jar效果很好。它可能应该是-cp'/Users/myname/tempJars/*
,这样shell就不会过早地扩展通配符(假设JVM通配符语法可以工作)。感谢您的回复,单独添加JAR效果很好。它可能应该是-cp'/Users/myname/tempJars/*'
,这样shell就不会过早地扩展通配符(假设JVM通配符语法可以工作)。