首页 > 解决方案 > JavaFX 无法找到或加载主类

问题描述

我没有使用 maven、gradle 或类似的东西。

我可以在 intellij idea 上运行程序,但是当我构建工件并从命令提示符运行可执行 jar 文件时,java -jar myProgram.jar我收到此错误:

Error: Could not find or load main class myProgram.Main
Caused by: java.lang.ClassNotFoundException: myProgram.Main

但是,当我从 src 文件夹中的命令提示符尝试程序时,javac -classpath . myProgram/Main.java我收到此错误:

import javafx.application.Application;
                         ^
myProgram\Main.java:4: error: package javafx.fxml does not exist
import javafx.fxml.FXMLLoader;
                  ^
myProgram\Main.java:5: error: package javafx.scene does not exist
import javafx.scene.Parent;
                   ^
myProgram\Main.java:6: error: package javafx.scene does not exist
import javafx.scene.Scene;
                   ^
myProgram\Main.java:7: error: package javafx.stage does not exist
import javafx.stage.Stage;
                   ^
myProgram\Main.java:8: error: package javafx.stage does not exist
import javafx.stage.StageStyle;
                   ^
myProgram\Main.java:13: error: cannot find symbol
public class Main extends Application {
                          ^
  symbol: class Application
myProgram\Main.java:20: error: cannot find symbol
    public void start(Stage primaryStage) throws Exception {
                      ^
  symbol:   class Stage
  location: class Main
myProgram\Main.java:27: error: cannot find symbol
    public static void setWindowForMainPage(Stage stage, URL page) throws IOException {
                                            ^
  symbol:   class Stage
  location: class Main
myProgram\Main.java:34: error: cannot find symbol
    public static void setWindowForLoginPage(Stage stage, URL page) throws IOException {
                                             ^
  symbol:   class Stage
  location: class Main
myProgram\Main.java:19: error: method does not override or implement a method from a supertype
    @Override
    ^
myProgram\Main.java:21: error: cannot find symbol
        loginPage = getClass().getResource("pages/loginPage.fxml");
                    ^
  symbol:   method getClass()
  location: class Main
myProgram\Main.java:22: error: cannot find symbol
        mainPage = getClass().getResource("pages/mainPage.fxml");
                   ^
  symbol:   method getClass()
  location: class Main
myProgram\Main.java:28: error: cannot find symbol
        Parent mainPage = FXMLLoader.load(page);
        ^
  symbol:   class Parent
  location: class Main
myProgram\Main.java:28: error: cannot find symbol
        Parent mainPage = FXMLLoader.load(page);
                          ^
  symbol:   variable FXMLLoader
  location: class Main
myProgram\Main.java:29: error: cannot find symbol
        stage.setScene(new Scene(mainPage, 1093, 730));
                           ^
  symbol:   class Scene
  location: class Main
myProgram\Main.java:35: error: cannot find symbol
        Parent loginPage = FXMLLoader.load(page);
        ^
  symbol:   class Parent
  location: class Main
myProgram\Main.java:35: error: cannot find symbol
        Parent loginPage = FXMLLoader.load(page);
                           ^
  symbol:   variable FXMLLoader
  location: class Main
myProgram\Main.java:36: error: cannot find symbol
        stage.setScene(new Scene(loginPage, 400, 170));
                           ^
  symbol:   class Scene
  location: class Main
myProgram\Main.java:38: error: cannot find symbol
        stage.initStyle(StageStyle.TRANSPARENT);
                        ^
  symbol:   variable StageStyle
  location: class Main
myProgram\Main.java:44: error: cannot find symbol
        launch(args);
        ^
  symbol:   method launch(String[])
  location: class Main
21 errors

我的文件树

通常,我使用的是 JDK 16 和 JavaFX 16。我可以运行其他构建的 jar。但只有这个项目给出了这个错误。我还尝试使用 JDK 14 和 JavaFX 14。

我的虚拟机选项: --module-path "C:\Program Files\Java\javafx-sdk-14.0.2\lib" --add-modules javafx.fxml,javafx.controls,javafx.base,javafx.web,javafx.media,javafx.graphics --add-opens javafx.base/com.sun.javafx.runtime=ALL-UNNAMED --add-opens javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED --add-opens javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED --add-opens javafx.base/com.sun.javafx.binding=ALL-UNNAMED --add-opens javafx.base/com.sun.javafx.event=ALL-UNNAMED --add-opens javafx.graphics/com.sun.javafx.stage=ALL-UNNAMED

我的图书馆:

字体真棒 html-unit jasper-reports java-fx jfoenix

标签: javajavafx

解决方案


推荐阅读