Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用类路径在雪豹上运行Jar_Java_Osx Snow Leopard_Classpath - Fatal编程技术网

Java 使用类路径在雪豹上运行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

我正在运行SnowLeopard,我刚刚在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)
或直接在清单文件中引用它。两次尝试均失败,错误相同。 这些库是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通配符语法可以工作)。