0

我刚刚在控制台中编译了一个 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)

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

4

3 回答 3

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

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

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
于 2013-04-04T15:40:16.393 回答
1

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

于 2013-04-04T15:39:25.713 回答
-2

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

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

于 2013-04-04T15:56:29.933 回答