我在 Eclipse IDE 中撰寫了 JavaFx 專案,它作業正常。
一旦我將它轉換為 Maven 專案,我的 FMXL 檔案就會停止打開。但是,如果我創建新的 FXML 檔案并將它們放在同一個檔案夾中,那么一切正常。
有沒有辦法在不重新創建所有 FXML 檔案的情況下運行我的 Maven 專案?
我已經嘗試在代碼中更改我的 FXML 檔案的路徑,將 FXML 移動到 src/main/resources 包,或者只是將代碼從舊 FXML 復制到新 FXML,但沒有任何效果。
我在 SceneBuilder 中創建的所有 FXML 并沒有在整個程序中更改此程式的版本。
我正在使用以下方法加載我的 FXML:
private void showMainPage() throws IOException {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/MainView.fxml"));
mainLayout = loader.load();
Scene scene = new Scene(mainLayout);
primaryStage.setScene(scene);
primaryStage.show();
}
我的 pom.xml 檔案
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fx</groupId>
<artifactId>maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>fxMaven</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.36.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.6</version>
<executions>
<execution>
<!-- Default configuration for running -->
<!-- Usage: mvn clean javafx:run -->
<id>default-cli</id>
<configuration>
<mainClass>ru.jfxreselection.App</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.fxml</include>
</includes>
</resource>
</resources>
</build>
我嘗試使用舊的 .FXML 檔案運行的錯誤
在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) 的 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 的應用程式啟動方法 java.lang.reflect.InvocationTargetException 中的例外) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:567) 在 javafx.graphics/com。 sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364) 在 java.base/jdk.internal.reflect。 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) 中的 NativeMethodAccessorImpl.invoke0(Native Method)。reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:567) 在 java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper. java:1071) 原因:java.lang.RuntimeException: javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 在 javafx.graphics/com.sun 的應用程式啟動方法中的例外。 javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users /Tormo/eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml。 FXMLLoader.loadImpl(FXMLLoader.java:2685)DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:567) 在 java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java: 1071) 原因:java.lang.RuntimeException:javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 在 javafx.graphics/com.sun.javafx 的應用程式啟動方法中的例外。 application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users/Tormo /eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml.FXMLLoader。 loadImpl(FXMLLoader.java:2685)DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:567) 在 java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java: 1071) 原因:java.lang.RuntimeException:javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 在 javafx.graphics/com.sun.javafx 的應用程式啟動方法中的例外。 application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users/Tormo /eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml.FXMLLoader。 loadImpl(FXMLLoader.java:2685)第2685章第2685章第2685章第2685章在 java.base/java.lang.reflect.Method.invoke(Method.java:567) 在 java.base/sun.launcher.LauncherHelper 呼叫(DelegatingMethodAccessorImpl.java:43) $FXHelper.main(LauncherHelper.java:1071)原因:java.lang.RuntimeException:javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 的 javafx.graphics/com.sun.javafx.application 的應用程式啟動方法例外。 LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users/Tormo/eclipse -workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl( FXMLLoader.java:2685)在 java.base/java.lang.reflect.Method.invoke(Method.java:567) 在 java.base/sun.launcher.LauncherHelper 呼叫(DelegatingMethodAccessorImpl.java:43) $FXHelper.main(LauncherHelper.java:1071)原因:java.lang.RuntimeException:javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 的 javafx.graphics/com.sun.javafx.application 的應用程式啟動方法例外。 LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users/Tormo/eclipse -workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl( FXMLLoader.java:2685)reflect.Method.invoke(Method.java:567) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071) 原因:java.lang.RuntimeException:javafx 的應用程式啟動方法中的例外。圖形/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) 在 java.base /java.lang.Thread.run(Thread.java:831) 引起:javafx.fxml.LoadException:/C:/Users/Tormo/eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml: 48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2685)reflect.Method.invoke(Method.java:567) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071) 原因:java.lang.RuntimeException:javafx 的應用程式啟動方法中的例外。圖形/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) 在 java.base /java.lang.Thread.run(Thread.java:831) 引起:javafx.fxml.LoadException:/C:/Users/Tormo/eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml: 48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2685)java:1071) 原因:java.lang.RuntimeException: javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 在 javafx.graphics/com.sun 的應用程式啟動方法中的例外。 javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users /Tormo/eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml。 FXMLLoader.loadImpl(FXMLLoader.java:2685)java:1071) 原因:java.lang.RuntimeException: javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901) 在 javafx.graphics/com.sun 的應用程式啟動方法中的例外。 javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users /Tormo/eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml。 FXMLLoader.loadImpl(FXMLLoader.java:2685)javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users /Tormo/eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml。 FXMLLoader.loadImpl(FXMLLoader.java:2685)javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:831) 原因:javafx.fxml.LoadException: /C:/Users /Tormo/eclipse-workspace/rslFxNewMaven/target/classes/reselection/view/MainView.fxml:48 在 javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2707) 在 javafx.fxml/javafx.fxml。 FXMLLoader.loadImpl(FXMLLoader.java:2685)
在 javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
在 javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2516) 在 rslFxNewMaven/reselection.Main.showMainPage(Main.java:28) 在 rslFxNewMaven/reselection.Main.start(Main.java:22) 在javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847) 在 javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484) ) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at javafx.graphics /com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456) 在 javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) 在 javafx。圖形/com.sun.glass.ui.win.WinApplication。_runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184) ... 1 更多原因:java.lang.reflect.InaccessibleObjectException: Unable使 private void reselection.view.MainViewController.goDacSearch() 拋出 java.io.IOException 可訪問:模塊 rslFxNewMaven 不會在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible 中“打開 reselection.view”到模塊 javafx.fxml (AccessibleObject.java:357) 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) 在 java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199) 在java.base/java.lang.reflect.Method.setAccessible(Method.java:193)1 更多原因:java.lang.reflect.InaccessibleObjectException:無法使私有 void reselection.view.MainViewController.goDacSearch() 拋出 java.io.IOException 可訪問:模塊 rslFxNewMaven 沒有“打開 reselection.view”到模塊 javafx.fxml在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) 在 java.base/java.lang .reflect.Method.checkCanSetAccessible(Method.java:199) 在 java.base/java.lang.reflect.Method.setAccessible(Method.java:193)1 更多原因:java.lang.reflect.InaccessibleObjectException:無法使私有 void reselection.view.MainViewController.goDacSearch() 拋出 java.io.IOException 可訪問:模塊 rslFxNewMaven 沒有“打開 reselection.view”到模塊 javafx.fxml在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) 在 java.base/java.lang .reflect.Method.checkCanSetAccessible(Method.java:199) 在 java.base/java.lang.reflect.Method.setAccessible(Method.java:193)fxml 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) 在 java.base/java。 lang.reflect.Method.checkCanSetAccessible(Method.java:199) 在 java.base/java.lang.reflect.Method.setAccessible(Method.java:193)fxml 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) 在 java.base/java。 lang.reflect.Method.checkCanSetAccessible(Method.java:199) 在 java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
在 javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.addAccessibleMethods(FXMLLoader.java:3611) 在 javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor$1.run(FXMLLoader.java:3543) 在 javafx.fxml/javafx。 fxml.FXMLLoader$ControllerAccessor$1.run(FXMLLoader.java:3536) at java.base/java.security.AccessController.doPrivileged(AccessController.java:312) at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.addAccessibleMembers(FXMLLoader .java:3535) 在 javafx.fxml/javafx.fxml.FXMLLoader$Element.getControllerMethodHandle(FXMLLoader.java:573) 在 javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.getControllerMethods(FXMLLoader.java:3494) 在 javafx。 fxml/javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(FXMLLoader.java:610) 在 javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:781) 在 javafx.fxml/javafx。fxml.FXMLLoader.processEndElement(FXMLLoader.java:2924) 在 javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2639)
... 13 更多 Exception running application reselection.Main
uj5u.com熱心網友回復:
這與 Maven 無關,是您的應用程式的 Java 模塊系統配置不正確導致的訪問錯誤。
錯誤訊息告訴您出了什么問題:
module rslFxNewMaven does not "opens reselection.view" to module javafx.fxml
學習-> java 模塊。
將以下行添加到您的 module-info.java:
opens reselection.view to javafx.fxml;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412024.html
標籤:
