【问题标题】:Java Application not opening on Ubuntu but opening on windowsJava 应用程序未在 Ubuntu 上打开但在 Windows 上打开
【发布时间】:2014-10-09 12:15:50
【问题描述】:

您好,我有自己开发的 java 桌面应用程序,它使用外部 jar 文件。当我在 Windows 上打开它时,它会成功打开,但在 Ubuntu 14.04 上它会失败并出现异常。

窗户:

java -cp bin;lib\thinlet.jar;lib\xercesImpl.jar;lib\xml-apis.jar;lib\commons-cli-1.0.jar;lib\jsyntaxpane-0.9.5-b29.jar;lib com.macpropeditor.propedit.ApplicationRunner

Ubuntu:

java -cp bin:lib\thinlet.jar:lib\xercesImpl.jar:lib\xml-apis.jar:lib\commons-cli-1.0.jar:lib\jsyntaxpane-0.9.5-b29.jar:lib com.macpropeditor.propedit.ApplicationRunner

在 ubuntu 上出现以下错误:

abc@abc-virtual-machine:~/MACPropEditor$ java -cp bin:lib\thinlet.jar:lib\xml-apis.jar:lib\xercesImpl.0.jar:lib\jsyntaxpane-0.9.5-b29.jar:lib com.macpropeditor.propedit.ApplicationRunner
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)
    at java.lang.Class.getMethod0(Class.java:2813)
    at java.lang.Class.getMethod(Class.java:1663)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

我需要在 Ubuntu 上设置什么吗?请建议。 'lib' 目录中存在的所有 jars。

Java 版本 windows: java版本“1.6.0_27” Java(TM) SE 运行时环境 (build 1.6.0_27-b07) Java HotSpot(TM) Client VM(build 20.2-b06,混合模式,共享)

Java 版本 Ubuntu: java版本“1.7.0_65” OpenJDK 运行环境 (IcedTea 2.5.2) (7u65-2.5.2-3~14.04) OpenJDK Server VM(build 24.65-b04,混合模式)

程序在windows机器上编译,也部署在ubuntu上。

【问题讨论】:

    标签: jar noclassdeffounderror


    【解决方案1】:

    我打赌这是由于不同的 Java 版本。 Ubuntu 上的 Java 无法识别这些类,因为它们是使用更高版本的 Java 编译的(例如 Java 8,但使用 Java 7 运行)。

    在这两种情况下都使用java -version检查你的java版本。

    【讨论】:

    • @davamac,我已经更新了有问题的 java 版本。你想让我也在 ubuntu 上构建它吗?
    • 不,问题是 Ubuntu 上的 Java 版本较旧,但您已经证明它较新。我想下一步是验证您在类路径中列出的 jar 文件在 Windows 和 Ubuntu 上是否相同(检查 md5sum 或类似文件)。然后尝试查找哪个jar文件中实际包含未找到的类。
    • 感谢您的建议。但是这些罐子是一样的,因为我只是将它们从 Windows 复制到了 ubuntu。同样从异常看起来像 commons-cli-1.0.jar 的问题--> NoClassDefFoundError: org/apache/commons/cli/ParseException 知道如何走得更远:-(
    【解决方案2】:

    问题已解决:

    我在 ubuntu 上使用的是 '\' 而不是 '/'。

    所以下面的 cmd 正在工作:

    java -cp bin:lib/commons-cli-1.0.jar:lib/thinlet.jar:lib/xercesImpl.jar:lib/xml-apis.jar:lib/jsyntaxpane-0.9.5-b29.jar:lib com.macpropeditor.propedit.ApplicationRunner
    

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      相关资源
      最近更新 更多