JavaFX12: получая несколько ошибок при запуске приложения, не могу решить их с подобными ответами на вопрос - PullRequest
1 голос
/ 22 марта 2019

Итак, у меня есть (google) (много) по этому поводу, и я нашел несколько вопросов с похожими, если не идентичными проблемами, но их ответы по-прежнему не работают для меня.

Для обеспечения некоторого контекста: Iу меня уже есть приложение, в котором я хотел реализовать GUI с Javafx, а также просто обновил свое приложение до Java 12, все по-прежнему работало отлично до добавления чего-либо связанного с javafx.

Затем, следуя некоторым инструкциям, добавить javafx(вместо того, чтобы полностью создать его как проект Javafx с самого начала, не уверен, что это может создать проблему), поскольку он отсутствует в Java JDK 12, я добавил его через следующие зависимости Maven:

   <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>12</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>12</version>
    </dependency>

Затем кодировал это в начале класса Main в моем приложении:

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        primaryStage.setTitle("Test title");
        Button button = new Button();
        button.setText("Click me!");
        StackPane layout = new StackPane();
        layout.getChildren().add(button);
        Scene scene = new Scene(layout, 300, 250);
        primaryStage.setScene(scene);
        primaryStage.show();
}

Создайте его успешно, запустите, выдает следующие исключения / ошибки:

Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: 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:835)
Caused by: java.lang.IllegalAccessError: superclass access check failed: class com.sun.javafx.scene.control.ControlHelper (in unnamed module @0x20e621ae) cannot access class com.sun.javafx.scene.layout.RegionHelper (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.scene.layout to unnamed module @0x20e621ae
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
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:521)
at javafx.scene.control.Control.<clinit>(Control.java:86)
at amaio.Main.start(Main.java:19)
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(AccessController.java:389)
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.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more

Итак, дляпо большей части самое распространенное решение, которое я видел, - добавление к виртуальной машине определенных параметров (много пробовал), не сработало.Также пытался найти какие-либо противоречивые вещи JDK на всякий случай, так как я только что переместил свой проект с JDK 11 на 12, но тоже не сработал.Поэтому через много часов я сдался и решил спросить здесь, даже если вопрос очень похож на предыдущие, просто то, что их решения не сработали для меня.Может быть, я настроил что-то неправильно, может, я что-то делаю неправильно или что-то напутал, учитывая, что я использую Maven.Кроме того, я относительно новичок в программировании в целом, поэтому извините, если некоторые вопросы не имеют смысла, или некоторые вещи не ясны с самого начала.

РЕДАКТИРОВАТЬ: я запускаю его из моей IDE, а не плагин Maven.Относительно того, какие параметры виртуальной машины я уже использовал, точно не знаю, какие именно из памяти, но почти все, что мы видели в предыдущих решенных вопросах о стековом потоке и подобных сайтах, которые появляются при поиске исключений / ошибок.Я думаю, что только те, которые я не пробовал, - это те, которые пытаются загрузить всю библиотеку Javafx SDK в программу, поскольку, насколько я понимаю, она не нужна, если она уже загружена с зависимостями Maven.

РЕДАКТИРОВАТЬ2: Решенный это, это - часть, когда я чувствую себя глупым.Так что, это просто ошибка новичка, я думаю, но для любого, кто находится на моем месте, запустите программу из подключаемых модулей Maven вместо самого инструмента запуска IDE.Работал как шарм.

1 Ответ

0 голосов
/ 26 марта 2019

Это случилось со мной раньше.Просто переключитесь на более стабильную версию Java, и все будет в порядке.Это сработало для меня.Java 12 является нестабильной версией Java, которая все еще находится в стадии разработки, поэтому я бы посоветовал вам перейти на Java 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...