Java 无法识别命令行设置的类路径
Java won't recognize classpath set by command line
这是我的代码:
import java.net.URL;
import java.net.URLClassLoader;
public class App {
public static void main(String[] args) {
System.out.println("java.class.path="+System.getProperty("java.class.path"));
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
System.out.println(url.getFile());
}
}
}
当我在 Eclipse 中使用 LWJGL 和 Slick2d 库运行它时,我得到了预期的结果:
java.class.path=/home/the-genius/workspace/classpath/bin:/home/the-geniu/workspace
/libs/slick/lib/slick.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar
/lwjgl.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl_util.jar:
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/jinput.jar
/home/the-genius/workspace/classpath/bin/
/home/the-genius/workspace/libs/slick/lib/slick.jar
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl.jar
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl_util.jar
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/jinput.jar
但是,当我将其导出为可运行的 jar 并通过
执行时
java -cp /home/the-genius/workspace/classpath/bin:/home/the-geniu/workspace
/libs/slick/lib/slick.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar
/lwjgl.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl_util.jar: -jar app.jar
我明白了
java.class.path=classpath.jar
/home/the-genius/classpath.jar
发生这种情况有什么原因吗?我该如何解决?
我在 Ubuntu 上运行,如果这有什么不同的话。我也尝试过使用 OpenJDK-7 和 Sun Java-7。
如果同时使用-cp
和-jar
选项,前者将被忽略。要修复它,您可以在没有 -jar
的情况下 运行(将您的 jar 文件添加到 class 路径并调用主 class: java -cp app.jar App
)或添加classjar 清单文件的路径。
这是我的代码:
import java.net.URL;
import java.net.URLClassLoader;
public class App {
public static void main(String[] args) {
System.out.println("java.class.path="+System.getProperty("java.class.path"));
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
System.out.println(url.getFile());
}
}
}
当我在 Eclipse 中使用 LWJGL 和 Slick2d 库运行它时,我得到了预期的结果:
java.class.path=/home/the-genius/workspace/classpath/bin:/home/the-geniu/workspace
/libs/slick/lib/slick.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar
/lwjgl.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl_util.jar:
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/jinput.jar
/home/the-genius/workspace/classpath/bin/
/home/the-genius/workspace/libs/slick/lib/slick.jar
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl.jar
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl_util.jar
/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/jinput.jar
但是,当我将其导出为可运行的 jar 并通过
执行时java -cp /home/the-genius/workspace/classpath/bin:/home/the-geniu/workspace
/libs/slick/lib/slick.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar
/lwjgl.jar:/home/the-genius/workspace/libs/lwjgl/lwjgl-2.9.2/jar/lwjgl_util.jar: -jar app.jar
我明白了
java.class.path=classpath.jar
/home/the-genius/classpath.jar
发生这种情况有什么原因吗?我该如何解决?
我在 Ubuntu 上运行,如果这有什么不同的话。我也尝试过使用 OpenJDK-7 和 Sun Java-7。
如果同时使用-cp
和-jar
选项,前者将被忽略。要修复它,您可以在没有 -jar
的情况下 运行(将您的 jar 文件添加到 class 路径并调用主 class: java -cp app.jar App
)或添加classjar 清单文件的路径。