Невозможно настроить javafx в vscode ⇐ JAVA
-
Гость
Невозможно настроить javafx в vscode
Некоторое время я пытался заставить javafx работать с vscode, хотя следую официальному руководству по javafx: https://openjfx.io/openjfx-docs/#install-java (инструкции по vscode слева) .
Я использую Linux Mint 21 и у меня установлен jdk 17.
Проект представляет собой папку HelloFX с папками bin, lib, src внутри. Внутри src у меня есть папка hellofx, содержащая:
App.java
пакет hellofx; импортировать javafx.application.Application; импортировать javafx.fxml.FXMLLoader; импортировать javafx.scene.Parent; импортировать javafx.scene.Scene; импортировать javafx.stage.Stage; Общедоступный класс App расширяет приложение { @Override public void start (Stage PrimaryStage) выдает исключение { Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); PrimaryStage.setTitle("Привет, мир"); PrimaryStage.setScene(новая сцена (корень, 400, 300)); первичный этап.шоу(); } public static void main(String[] args) { запуск(App.class); } } Controller.java
метка частной метки; общественная недействительная инициализация () { Строка javaVersion = System.getProperty("java.version"); Строка javafxVersion = System.getProperty("javafx.version"); label.setText("Привет, JavaFX " + javafxVersion + "\nРабота на Java " + javaVersion + "."); } } hellofx.fxml
По инструкциям я создаю launch.json
{ "версия": "0.2.0", "конфигурации": [ { "тип": "Ява", "name": "Запустить приложение", "запрос": "запуск", "mainClass": "hellofx.App", "vmArgs": "--module-path ~/Scaricati/javafx-sdk-21/lib --add-modules javafx.controls,javafx.fxml", } ] }
Плюс я пишу в файле .bashrc:
экспортировать JAVA_HOME=/usr/lib/jvm/java-17-oracle
Наверное, чего-то не хватает, поскольку приложение не запускается:
App.java:3: ошибка: пакет javafx.application не существует импортировать javafx.application.Application; ^ App.java:4: ошибка: пакет javafx.fxml не существует импортировать javafx.fxml.FXMLLoader; ^ App.java:5: ошибка: пакет javafx.scene не существует импортировать javafx.scene.Parent; ^ App.java:6: ошибка: пакет javafx.scene не существует импортировать javafx.scene.Scene; ^ App.java:7: ошибка: пакет javafx.stage не существует импортировать javafx.stage.Stage; ^ App.java:9: ошибка: не удается найти символ Общедоступный класс App расширяет приложение { ^ символ: приложение класса App.java:12: ошибка: невозможно найти символ public void start (Stage PrimaryStage) выдает исключение { ^ символ: класс Stage местоположение: приложение класса App.java:11: ошибка: метод не переопределяет и не реализует метод из супертипа u/Переопределить ^ App.java:13: ошибка: не удается найти символ Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); ^ символ: Родитель класса местоположение: приложение класса App.java:13: ошибка: не удается найти символ Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); ^ символ: переменная FXMLLoader местоположение: приложение класса App.java:13: ошибка: не удается найти символ Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); ^ символ: метод getClass() местоположение: приложение класса App.java:15: ошибка: не удается найти символ PrimaryStage.setScene(новая сцена (корень, 400, 300)); ^ символ: класс Сцена местоположение: приложение класса App.java:20: ошибка: не удается найти символ запуск(App.class); ^ символ: запуск метода (Класс) местоположение: приложение класса 13 ошибок ИЗМЕНИТЬ
Приложение работает нормально с этим методом:
https://openjfx.io/openjfx-docs/#modular
Но есть и обратная сторона: консоль загромождена ошибками, хотя приложение будет работать с командами
Некоторое время я пытался заставить javafx работать с vscode, хотя следую официальному руководству по javafx: https://openjfx.io/openjfx-docs/#install-java (инструкции по vscode слева) .
Я использую Linux Mint 21 и у меня установлен jdk 17.
Проект представляет собой папку HelloFX с папками bin, lib, src внутри. Внутри src у меня есть папка hellofx, содержащая:
App.java
пакет hellofx; импортировать javafx.application.Application; импортировать javafx.fxml.FXMLLoader; импортировать javafx.scene.Parent; импортировать javafx.scene.Scene; импортировать javafx.stage.Stage; Общедоступный класс App расширяет приложение { @Override public void start (Stage PrimaryStage) выдает исключение { Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); PrimaryStage.setTitle("Привет, мир"); PrimaryStage.setScene(новая сцена (корень, 400, 300)); первичный этап.шоу(); } public static void main(String[] args) { запуск(App.class); } } Controller.java
метка частной метки; общественная недействительная инициализация () { Строка javaVersion = System.getProperty("java.version"); Строка javafxVersion = System.getProperty("javafx.version"); label.setText("Привет, JavaFX " + javafxVersion + "\nРабота на Java " + javaVersion + "."); } } hellofx.fxml
По инструкциям я создаю launch.json
{ "версия": "0.2.0", "конфигурации": [ { "тип": "Ява", "name": "Запустить приложение", "запрос": "запуск", "mainClass": "hellofx.App", "vmArgs": "--module-path ~/Scaricati/javafx-sdk-21/lib --add-modules javafx.controls,javafx.fxml", } ] }
Плюс я пишу в файле .bashrc:
экспортировать JAVA_HOME=/usr/lib/jvm/java-17-oracle
Наверное, чего-то не хватает, поскольку приложение не запускается:
App.java:3: ошибка: пакет javafx.application не существует импортировать javafx.application.Application; ^ App.java:4: ошибка: пакет javafx.fxml не существует импортировать javafx.fxml.FXMLLoader; ^ App.java:5: ошибка: пакет javafx.scene не существует импортировать javafx.scene.Parent; ^ App.java:6: ошибка: пакет javafx.scene не существует импортировать javafx.scene.Scene; ^ App.java:7: ошибка: пакет javafx.stage не существует импортировать javafx.stage.Stage; ^ App.java:9: ошибка: не удается найти символ Общедоступный класс App расширяет приложение { ^ символ: приложение класса App.java:12: ошибка: невозможно найти символ public void start (Stage PrimaryStage) выдает исключение { ^ символ: класс Stage местоположение: приложение класса App.java:11: ошибка: метод не переопределяет и не реализует метод из супертипа u/Переопределить ^ App.java:13: ошибка: не удается найти символ Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); ^ символ: Родитель класса местоположение: приложение класса App.java:13: ошибка: не удается найти символ Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); ^ символ: переменная FXMLLoader местоположение: приложение класса App.java:13: ошибка: не удается найти символ Родительский корень = FXMLLoader.load(getClass().getResource("hellofx.fxml")); ^ символ: метод getClass() местоположение: приложение класса App.java:15: ошибка: не удается найти символ PrimaryStage.setScene(новая сцена (корень, 400, 300)); ^ символ: класс Сцена местоположение: приложение класса App.java:20: ошибка: не удается найти символ запуск(App.class); ^ символ: запуск метода (Класс) местоположение: приложение класса 13 ошибок ИЗМЕНИТЬ
Приложение работает нормально с этим методом:
https://openjfx.io/openjfx-docs/#modular
Но есть и обратная сторона: консоль загромождена ошибками, хотя приложение будет работать с командами