我刚刚在控制台中编译了一个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?
答案 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文件夹中)