java设置classpath

时间:2013-04-04 15:36:14

标签: java jar classpath

我刚刚在控制台中编译了一个java程序。现在我想运行它。我需要postgresql和mysql的jdbc驱动程序。因此我需要包括相应的罐子。

我做了以下

java -Xmx512m -cp ".;/path/to/sql/jars" main.Main rc

这样做时我得到了以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: main/Main
Caused by: java.lang.ClassNotFoundException: main.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: main.Main. Program will exit.

忽略类似

的类路径选项时
java -Xmx512m  main.Main rc

我收到了以下错误

java.lang.ClassNotFoundException: org.postgresql.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at database.PostgresQL.getConnection(Unknown Source)
    at database.PostgresQL.loadIndexFromDatabase(Unknown Source)
    at main.Main.readDataFromDatabase(Unknown Source)
    at main.Main.main(Unknown Source)

因此,该程序可以正确运行。我的问题:如何告诉程序在控制台中正确查找jar?

3 个答案:

答案 0 :(得分:6)

java -Xmx512m -cp ".;/path/to/sql/jars" main.Main rc

首先,路径分隔符在Windows上仅为;,在其他平台上为:。其次,如果/path/to/sql/jars是包含JAR文件的目录,那么您需要在末尾添加/*并使用单引号而不是双引号:

java -Xmx512m -cp '.:/path/to/sql/jars/*' main.Main rc

java命令将类路径中的path/*视为等同于path/some-jar.jar:path/another-jar.jar枚举目录中的所有JAR文件,但您必须保护*免受扩展shell(因此是单引号)。

如果 在Windows上,那么相同的技巧可行,但使用分号,反斜杠和双引号:

java -Xmx512m -cp ".;C:\path\to\sql\jars\*" main.Main rc

答案 1 :(得分:1)

类路径条目的分隔符在Windows上为;,在Linux上为:。根据路径,你似乎在Linux上。

答案 2 :(得分:-2)

只需将PostgreSQL和MySQL连接器jar复制到 jdk.x.x_xx \ JRE \ lib中\分机 和 jre7 \ LIB \分机 文件夹(你可以在PostgreSQL和MySQL的安装目录中找到它们,

例如: - 对于MySQL,connector.jar位于MySQL \ MySQL Connector J文件夹中)