Adding jar to classpath when running from command line

落花浮王杯 提交于 2019-11-29 18:01:18

问题


Ok I know this question has been asked many many many times before, but I've googled it and looked at examples and looked at questions on SO for the past month, and I seriously cannot get this to work. I think the problem is that I want to be able to run the program from both Eclipse and the command line. I'm also using OSX and I think a lot of the examples I'm reading are for Windows/Linux.

If I have a simple program compiled in Eclipse that I want to run from the command line I do this:

java -cp bin MyProgram

I have another program I compile and run in Eclipse, and this references the MySQL JDBC connector (mysql-connector-java-5.1.19-bin.jar) which is stored in the same directory. This works fine from Eclipse, but I can't run it from the command line.

I've tried all combinations of things...

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

and get all sorts of class not found errors...

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)

回答1:


Your problem is min separator you are using. Separator ; is for windows. On Unix systems you should use : instead:

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




回答2:


Use a ':' to separate your entries on Unix systems:

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 converts it automatically.




回答3:


See:

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



回答4:


you did not set your main class in classpaht, try add ./ in -cp




回答5:


I would highly suggest you try --jar or -jar. I can't remember which it is, but those should settle you. Also, if you have the dev tools from apple, they have a jar packager.



来源:https://stackoverflow.com/questions/10385148/adding-jar-to-classpath-when-running-from-command-line

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!