无法从命令中偶尔执行 Java GUI

Unable to execute Java GUI from command like sporatically

我有一个使用 Swing 构建的 GUI 应用程序和一个名为 GraphStream 的第 3 方图形库(包含 2 个 JAR)。这可能是类路径问题,与库本身无关。

当我从 Eclipse 运行 时,出现了 GUI,但没有 errors/warnings。

但是,当我尝试从命令行 运行 时,我要么收到 NoClassDefFoundError,要么在加载库时应用程序 运行s 和 "hangs" 无限期地收到。这似乎完全是零星的。有时会打印错误,有时 JVM 会挂起。这就是我 运行 应用程序的方式:

java -verbose -classpath '../lib;.' -cp . bt_sim <args>

这两个 JAR 文件位于“../lib”目录中(这是该目录中仅有的两个文件)。而且,我写的类在“.”中。 - 当实际出现错误时,这是​​输出:

... Other loading output from JVM debug ...
[Loaded java.util.IdentityHashMap$KeySet from C:\Program Files\Java\jre8\lib\rt.jar]
java.lang.NoClassDefFoundError: org/graphstream/graph/Graph
    at bt_sim.main(bt_sim.java:70)
Caused by: java.lang.ClassNotFoundException: org.graphstream.graph.Graph
    at java.net.URLClassLoader.run(Unknown Source)

当应用程序挂起时:

...
[Loaded java.util.Formatter$Flags from C:\Program Files\Java\jre8\lib\rt.jar]
[Loaded java.util.Formatter$Conversion from C:\Program Files\Java\jre8\lib\rt.jar]
[Loaded sun.misc.Cleaner from C:\Program Files\Java\jre8\lib\rt.jar]

即使我 运行 来自 Linux 环境,也会发生同样的错误。在所有情况下,我都是 运行 JRE 8。在 Eclipse 中,当从命令行 运行ning 时,只包含两个 JAR 文件(第 3 方图形依赖项)。 JAR 文件位于我上面命令中的 "lib" 目录中。关于调查内容的任何想法都将非常有帮助!

我的解决方案 我没有意识到我必须在类路径 显式 中包含每个第三方 JAR。一旦我这样做了,应用程序就会按预期执行:-/

注意-classpath-cp是别名:

$ java -help
    …
    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search for class files.

我怀疑一起使用时一个会覆盖另一个。相反,使用包含平台所需的 lib 目录和路径分隔符的 form