从命令行运行时将jar添加到类路径
好的,我知道这个问题之前已被问了很多次,但是我用谷歌搜索了一下,看了几个例子,看了过去一个月的问题,我真的不能让这个问题起作用。 我认为问题是我希望能够从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)
您的问题是您正在使用的min分隔符。 分隔符;
是为了窗户。 在Unix系统上你应该使用:
而不是:
java -classpath“bin:mysql-connector-java-5.1.19-bin.jar”MyProgram
使用’:’分隔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会自动转换它。
看到:
String pathSeparator = System.getProperty("path.separator");
你没有在classpaht中设置你的主类,尝试添加./
in -cp
我强烈建议你尝试-jar或-jar。 我不记得它是什么,但那些应该解决你。 此外,如果你有苹果的开发工具,他们有一个jar包装器。
- GlassFish服务器收到消息时出现java.lang.NoClassDefFoundError错误
- 为什么System.setProperty()不能在运行时更改类路径?
- 如何一次性包含CLASSPATH中特定目录中的所有jar?
- Java -classpath选项
- 执行Mavenunit testing,并将classpath设置为生成的项目JAR
- java.lang.ClassNotFoundException / NoClassDefFoundError for com / fasterxml / jackson / databind / ObjectMapper with Maven
- 如何从Cygwin运行Java
- Java Manifest文件的类路径以及它如何确定相对dirs
- 查找与模式匹配的所有CLASSPATH资源