【问题标题】:Unable to install CPUSim in Ubuntu无法在 Ubuntu 中安装 CPUSim
【发布时间】:2020-08-24 09:11:10
【问题描述】:

我需要为我大学的一个项目运行 CPUSim 版本 4。按照网站和README.md 给出的指示,我收到此错误:

java -cp .:richtextfx-fat-0.6.10.jar:reactfx-2.0-MR.jar -jar CPUSim-4.0.11.jar

这给了我以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at cpusim.Main.main(Main.java:73)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 10 more

我浏览了论坛并尝试安装 openjfx,但没有成功。 我尝试下载 JavaFX 运行时并使用以下命令运行它:
java --module-path $JFX --add-modules javafx.controls -cp .:richtextfx-fat-0.6.10.jar:reactfx-2.0-MR.jar -jar CPUSim-4.0.11.jar 结果是这样的:

Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NoClassDefFoundError: javafx/fxml/Initializable
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at cpusim.GUIMain.start(GUIMain.java:50)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
        at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277)
        ... 1 more
Caused by: java.lang.ClassNotFoundException: javafx.fxml.Initializable
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 19 more

现在我不知道该怎么做,我只是想让它运行。目前这些对我来说都没有意义。任何帮助将不胜感激。

我的 java 版本:

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

【问题讨论】:

    标签: java ubuntu javafx


    【解决方案1】:

    这里:

    原因:java.lang.ClassNotFoundException: javafx.fxml.Initializable

    基本上告诉你:javax的东西不见了。

    问题是:让 javafx 在某些 Linux 发行版上工作实际上很棘手,因为发行版/JDK 包“交付”JavaFX 有很多不同的方式。

    我建议您转至here 以了解您的环境到底需要什么。

    【讨论】:

    • 没错,我只是关注那个网站。我真的不确定如何移植它,因为 --add-modules 似乎真的不起作用:'(。我什至尝试从源代码构建,但他们使用 gradle。我对这些很陌生所以这完全烧毁了我的大脑。
    • 你可以 apt install openjfx 它在 ubuntu 16 中对我有效,但在 20 中无效
    【解决方案2】:

    从堆栈跟踪中可以看出,您正在为您的应用程序使用 FXML。 javafx.fxml 包位于控件的单独模块(与包同名)中,因此您还需要将其包含在命令行中:

    java --module-path $JFX --add-modules javafx.controls,javafx.fxml -cp  .:richtextfx-fat-0.6.10.jar:reactfx-2.0-MR.jar -jar CPUSim-4.0.11.jar 
    

    【讨论】:

    • 感谢您的回复,之后不断出现更多错误。我假设他们希望我下载 Oracle Java 8
    猜你喜欢
    • 2014-03-09
    • 2017-11-01
    • 2013-06-13
    • 2020-09-09
    • 1970-01-01
    • 2022-01-15
    • 2018-04-06
    • 2019-07-30
    • 2020-01-21
    相关资源
    最近更新 更多