【发布时间】:2016-10-08 07:27:52
【问题描述】:
好的,我知道这个问题之前已经被问过很多次了,但是我在过去一个月里用谷歌搜索了它并查看了示例并查看了关于 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)
【问题讨论】:
-
嗨,马特,如果我没记错的话,我认为类路径是声明要执行的主类的路径。所以在这种情况下,如果你的类在 bin 文件夹中,我会尝试:java MyProgram 或 java -cp myprogrampath MyProgram
-
@FedericoGiust 不具体; classpath 只是定义了一个档案或一组类的路径。类路径可能包含也可能不包含可运行类(这通常会导致异常或直接 java.exe 错误)。类路径可以包含没有可运行类的目录和档案。