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 清单文件的路径。