Simple Java 11 JavaFXprogram, Ошибка при запуске из файла JAR (Windows)
У меня есть тестовая программа JavaFX, которая отлично работает в Eclipse. - Мне пришлось добавить файл информации о модуле (module-info.java), содержащий следующее:
module moduletest {
requires javafx.controls;
exports com.javafx.test.MenuTest;
}
Класс Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class MenuTest extends Application {
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(new VBox(), 300, 250);
Circle circle1 = new Circle(-20,0,200);
circle1.setFill(Color.CADETBLUE);
((VBox) scene.getRoot()).getChildren().addAll(circle1);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Когда я запускаю его как экспортированный файл JAR, используя следующую команду
java -jar TonyJavaFX.jar -classpath .;./lib/javafx.controls.jar
Я получаю следующую ошибку:
Ошибка: не удалось найти или загрузить основной класс com.javafx.test.MenuTest.MenuTest Причина: java.lang.NoClassDefFoundError: javafx/application/Application
Примечание: у меня есть папка lib прямо в папке, из которой я запускаю jar, в которой содержатся все jar-файлы JavaFX.
1 ответ
Вы должны убедиться, что модули javax.controls
а также javafx-graphics.jar
присутствуют в вашем модуле пути вместо пути к классу.
--module-path ./lib/javafx.controls.jar:./lib/javafx.graphics.jar
Примечание: это не потребует добавления javafx.graphics
модуль в объявлении вашего модуля, так как это требуется транзитивно javafx.controls
модуль. Помогает только наличие модуля в модульном пути.
Важно: в идеале вы должны добавить полную папку lib в modulepath. Больше здесь - https://openjfx.io/openjfx-docs/