Не удается установить CPUSim в Ubuntu

#java #ubuntu #javafx

#java #ubuntu #javafx

Вопрос:

Мне нужно запустить 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)
  

Ответ №1:

Здесь:

Вызвано: java.lang.Исключение ClassNotFoundException: javafx.fxml.Инициализируемый

В основном говорит вам: материал javax отсутствует.

Дело в том, что заставить javafx работать в каком-либо дистрибутиве Linux на самом деле сложно, поскольку существует так много разных способов, которыми пакеты distributions / JDK «доставляют» JavaFX.

Я предлагаю вам обратиться к here, чтобы узнать, что именно нужно вашей среде.

Комментарии:

1. Точно, я просто следую этому самому сайту. Я действительно не уверен, как его портировать, потому что —add-modules, похоже, действительно не работает :'( . Я даже пытался собрать из исходного кода, но они используют gradle. Я очень новичок в этом, так что просто полностью поджарил мой мозг.

2. Вы можете просто 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 
  

Комментарии:

1. Спасибо за ваш ответ, после этого он продолжал выдавать больше ошибок. Я предполагаю, что они ожидают, что я загружу Oracle Java 8