too*_*oom 0 java jar classpath
我刚刚在控制台中编译了一个java程序.现在我想运行它.我需要postgresql和mysql的jdbc驱动程序.因此我需要包括相应的罐子.
我做了以下
java -Xmx512m -cp ".;/path/to/sql/jars" main.Main rc
Run Code Online (Sandbox Code Playgroud)
这样做时,我得到了以下错误:
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.
Run Code Online (Sandbox Code Playgroud)
忽略这样的classpath选项时
java -Xmx512m main.Main rc
Run Code Online (Sandbox Code Playgroud)
我得到了以下错误
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)
Run Code Online (Sandbox Code Playgroud)
因此,程序可以正确运行.我的问题:如何告诉程序在控制台中正确查找jar?
java -Xmx512m -cp ".;/path/to/sql/jars" main.Main rc
Run Code Online (Sandbox Code Playgroud)
首先,路径分隔符仅;在Windows上,它:在其他平台上.其次,如果/path/to/sql/jars是包含JAR文件的目录,则需要/*在末尾添加一个并使用单引号而不是双引号:
java -Xmx512m -cp '.:/path/to/sql/jars/*' main.Main rc
Run Code Online (Sandbox Code Playgroud)
该java命令将path/*类路径视为path/some-jar.jar:path/another-jar.jar枚举目录中的所有JAR文件,但您必须保护*shell的扩展(因此单引号).
如果你是在Windows下,那么同样的伎俩工作,但用分号,反斜线和双引号:
java -Xmx512m -cp ".;C:\path\to\sql\jars\*" main.Main rc
Run Code Online (Sandbox Code Playgroud)