java - 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
解决方案
推荐阅读
- hyperledger-fabric - 获取配置文件的 pb 格式时出错
- swift - 我可以有一个带有可拖动分隔符和可调整大小视图的 NSStackView 吗?
- html - 我怎样才能改变 div 所以当我按下它时,文本会改变但它的大小不会?
- python - Pandas/Numpy 中的迭代公式
- java - 如何通过比较同一行上的三个变量来返回布尔值?
- angular - Hostlistener 滚动事件未触发
- c++ - 如何在 opencv ocl 中获取上下文?
- c# - AegisImplicitMail 内联附件
- java - fragment.java 中的 addFlags 错误
- c - 使用C语言的简单登录程序