12

好的,我知道这个问题之前已经被问过很多次了,但是我已经用谷歌搜索了它并查看了过去一个月的示例并查看了关于 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)
4

5 回答 5

14

您的问题是您正在使用的最小分隔符。分隔符;适用于窗户。在 Unix 系统上,您应该:改用:

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

于 2012-04-30T14:15:43.957 回答
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 会自动转换它。

于 2012-04-30T14:15:38.510 回答
1

看:

String pathSeparator = System.getProperty("path.separator");
于 2012-04-30T14:17:53.827 回答
0

你没有在classpaht中设置你的主类,尝试添加./-cp

于 2012-04-30T14:15:21.673 回答
-2

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

于 2012-04-30T14:16:58.620 回答