从命令行运行时将jar添加到类路径

时间:2012-04-30 14:11:55

标签: java classpath

好的,我知道这个问题之前已被问了很多次,但是我用谷歌搜索过它并查看了一些例子并查看过去一个月的SO问题,我真的不能让这个问题起作用。我认为问题是我希望能够从Eclipse和命令行运行该程序。我也在使用OSX,我认为我正在阅读的很多例子都是针对Windows / Linux的。

如果我有一个在Eclipse中编译的简单程序,我想从命令行运行,我这样做:

java -cp bin MyProgram

我在Eclipse中编译并运行了另一个程序,它引用了存储在同一目录中的MySQL JDBC连接器(mysql-connector-java-5.1.19-bin.jar)。这在Eclipse中运行良好,但我无法从命令行运行它。

我尝试了所有的组合......

java -classpath "bin;mysql-connector-java-5.1.19-bin.jar" MyProgram
java -cp bin\;mysql-connector-java-5.1.19-bin.jar MyProgram

并获得各种类未找到错误...

Exception in thread "main" java.lang.NoClassDefFoundError: MyProgram
Caused by: java.lang.ClassNotFoundException: MyProgram
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

5 个答案:

答案 0 :(得分:13)

您的问题是您正在使用的min分隔符。分隔符;适用于Windows。在Unix系统上,您应该使用:代替:

java -classpath“bin:mysql-connector-java-5.1.19-bin.jar”MyProgram

答案 1 :(得分:5)

使用':'分隔Unix系统上的条目:

java -classpath "bin:mysql-connector-java-5.1.19-bin.jar" MyProgram
java -cp bin:mysql-connector-java-5.1.19-bin.jar MyProgram

Eclipse自动转换它。

答案 2 :(得分:1)

见:

String pathSeparator = System.getProperty("path.separator");

答案 3 :(得分:0)

您未在classpath中设置主类,请尝试在-cp

中添加./

答案 4 :(得分:-2)

我强烈建议你尝试-jar或-jar。我不记得它是什么,但那些应该解决你。此外,如果你有苹果的开发工具,他们有一个jar包装器。