У меня проблема с файлами JavaFX. Они отлично работают внутри моей IDE, но когда я создаю себе файл .jar и пытаюсь запустить его вне среды, вот тут-то и начинаются проблемы ...
Двойной щелчок по Сам файл ничего не делает. Нет связи, нет сигнала, даже не выскочила командная строка на долю секунды. Ничего.
Когда я пытаюсь запустить его из командной строки, я получаю следующее сообщение:
Ошибка: не удалось найти или загрузить основной класс com.javafx.main.Main
Причина: java .lang.NoClassDefFoundError: javafx / application / Application
Вот упомянутое "main.Main" класс:
package com.javafx.main;
import com.javafx.controllers.OptionsController;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class Main extends Application {
private double x, y;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/javafx/screens/rootScreen.fxml"));
StackPane rootStackPane = loader.load();
Scene scene = new Scene(rootStackPane);
primaryStage.setScene(scene);
primaryStage.initStyle(StageStyle.UNDECORATED);
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/com/javafx/images/guessingGameIcon.png")));
rootStackPane.setOnMousePressed(mouseEvent -> {
x = mouseEvent.getSceneX();
y = mouseEvent.getSceneY();
});
rootStackPane.setOnMouseDragged(mouseEvent -> {
primaryStage.setX(mouseEvent.getScreenX() - x);
primaryStage.setY(mouseEvent.getScreenY() - y);
});
primaryStage.show();
OptionsController.backgroundMusic();
}
}
Я решил попробовать этот сайт
https://openjfx.io/openjfx-docs/#install -javafx и запустить Main. java сам. Вот что я получил из командной строки:
Main.java:3: error: package com.javafx.controllers does not exist
import com.javafx.controllers.OptionsController;
^
Main.java:40: error: cannot find symbol
OptionsController.backgroundMusic();
^
symbol: variable OptionsController
location: class Main
2 errors
Я использовал эту команду, чтобы получить вышеупомянутую ошибку:
javac --module-path C: \ ... \ javafx-sdk-11.0.2 \ lib --add-modules javafx.controls, javafx.f xml, javafx.graphics, javafx.media Main. java
Я не знаю, почему у меня такие проблемы с запуском приложения FX из-за пределов моего окружения. И почему то же приложение работает в нем совершенно нормально! Если бы кто-то мог объяснить ситуацию, я был бы рад.