我在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应用程序启动方法中出现异常。朗,反思一下。java上的InvocationTargetException。base/jdk。内部的反映NativeMethodAccessorImpl。在java上调用0(本机方法)。base/jdk。内部的反映NativeMethodAccessorImpl。在java上调用(NativeMethodAccessorImpl.java:78)。base/jdk。内部的反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。base/java。朗,反思一下。方法在javafx上调用(Method.java:567)。图形/com。太阳javafx。应用发射装置。在javafx上启动ApplicationWithArgs(LaunchImpl.java:465)。图形/com。太阳javafx。应用发射装置。在java上启动应用程序(LaunchImpl.java:364)。base/jdk。内部的反映NativeMethodAccessorImpl。在java上调用0(本机方法)。base/jdk。内部的反映NativeMethodAccessorImpl。在java上调用(NativeMethodAccessorImpl.java:78)。base/jdk。内部的反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。base/java。朗,反思一下。方法在java上调用(Method.java:567)。基地/太阳。发射器。LaunchHelper$FXHelper。main(launchelper.java:1071)由以下原因引起:java。lang.RuntimeException:javafx应用程序启动方法中的异常。图形/com。太阳javafx。应用发射装置。在javafx上启动Application1(LaunchImpl.java:901)。图形/com。太阳javafx。应用发射装置。lambda$launchApplication$2(LaunchImpl.java:196)位于java。base/java。朗。丝线。运行(Thread.java:831)的原因是:javafx。fxml。LoadException:/C:/Users/Tormo/eclipse workspace/rslFxNewMaven/target/classes/reselection/view/MainView。fxml:48在javafx。fxml/javafx。fxml。FXMLLoader。javafx上的constructLoadException(FXMLLoader.java:2707)。fxml/javafx。fxml。FXMLLoader。javafx上的loadImpl(fxmloader.java:2685)
。fxml/javafx。fxml。FXMLLoader。javafx上的loadImpl(fxmloader.java:2548)
。fxml/javafx。fxml。FXMLLoader。在rslFxNewMaven/reselection处加载(fxmloader.java:2516)。主要的在rslFxNewMaven/reselection上显示主页(Main.java:28)。主要的从javafx开始(Main.java:22)。图形/com。太阳javafx。应用发射装置。lambda$launchApplication1$9(LaunchImpl.java:847)位于javafx。图形/com。太阳javafx。应用PlatformImpl。lambda$runAndWait$12(platformpl.java:484)在javafx上。图形/com。太阳javafx。应用PlatformImpl。lambda$runLater$10(platformpl.java:457)在java。base/java。安全访问控制器。javafx上的doPrivileged(AccessController.java:391)。图形/com。太阳javafx。应用PlatformImpl。lambda$runLater$11(platformpl.java:456)位于javafx。图形/com。太阳玻璃用户界面。InvokeLaterDispatcher$Future。在javafx上运行(invokelateDispatcher.java:96)。图形/com。太阳玻璃用户界面。赢WinApplication_javafx上的runLoop(本机方法)。图形/com。太阳玻璃用户界面。赢WinApplication。lambda$runLoop$3(WinApplication.java:184)。。。还有一个原因是:java。朗,反思一下。无法访问对象异常:无法进行私有无效重新选择。看法主视图控制器。goDacSearch()抛出java。伊奥。IOException可访问:模块rslFxNewMaven不会“打开重新选择.视图”到模块javafx。java上的fxml。base/java。朗,反思一下。可访问对象。在java上选中CanSetAccessible(AccessibleObject.java:357)。base/java。朗,反思一下。可访问对象。在java上选中CanSetAccessible(AccessibleObject.java:297)。base/java。朗,反思一下。方法java上的checkCanSetAccessible(Method.java:199)。base/java。朗,反思一下。方法setAccessible(Method.java:193)
位于javafx。fxml/javafx。fxml。FXMLLoader$ControllerAccessor。在javafx上添加AccessibleMethods(FXMLLoader.java:3611)。fxml/javafx。fxml。FXMLLoader$ControllerAccessor$1。在javafx上运行(fxmloader.java:3543)。fxml/javafx。fxml。FXMLLoader$ControllerAccessor$1。在java上运行(FXMLLoader.java:3536)。base/java。安全访问控制器。javafx上的doPrivileged(AccessController.java:312)。fxml/javafx。fxml。FXMLLoader$ControllerAccessor。在javafx上添加AccessibleMember(FXMLLoader.java:3535)。fxml/javafx。fxml。FXMLLoader$ControllerAccessor。javafx上的getControllerMethods(FXMLLoader.java:3494)。fxml/javafx。fxml。FXMLLoader$元素。javafx上的getControllerMethodHandle(FXMLLoader.java:573)。fxml/javafx。fxml。FXMLLoader$元素。javafx上的ProcessEventHandlerAttribute(FXMLLoader.java:610)。fxml/javafx。fxml。FXMLLoader$ValueElement。javafx上的processEndElement(FXMLLoader.java:781)。fxml/javafx。fxml。FXMLLoader。javafx上的processEndElement(FXMLLoader.java:2924)。fxml/javafx。fxml。FXMLLoader。loadImpl(fxmloader.java:2639)
。。。13更多运行应用程序重新选择的异常。主要的
这与Maven无关,它是由应用程序的Java模块系统配置不正确引起的访问错误。
错误消息告诉您什么是错误的:
module rslFxNewMaven does not "opens reselection.view" to module javafx.fxml
学习-
在模块信息中添加以下行。爪哇:
opens reselection.view to javafx.fxml;
问题内容: 我目前正在使用普通的Java项目(gradle项目),并希望将其转换为JavaFx项目,而不必将现有源重新导入到新的Javafx项目中。有什么办法可以做到这一点? 问题答案: 没有什么可以转换的。 我认为“正常” Java项目和JavaFX项目之间在Idea中没有任何区别。 当然,在Idea 12.x +中,可以使用向导创建新的JavaFX项目。但是我认为它所做的只是创建一个示例hel
我目前正在使用一个普通的java项目(gradle项目),并希望将其转换为JavaFx项目,而不必将现有的源代码重新导入到一个新的JavaFx项目中。有没有办法做到这一点?
问题内容: 有人可以告诉我如何将我的Java程序代码导入Eclipse吗?因为我有点想导入它。我通常使用Java博士,但是我想开始使用Eclipse,因为我觉得它更专业并且我喜欢它的“感觉”?那么有人可以向我解释如何去做吗? 如果您需要任何东西,请问:D 问题答案: 为了将您的代码导入Eclipse: 确保所有代码都在一个文件夹(例如/ project)下 在Eclipse中,使用File-> N
我试图使用Eclipse的从maven开始。但如果我尝试将现有项目更改为Maven项目(),结果是: null 问题可能出在哪里? 更新(生成的pom.xml):
问题内容: 我正在从事Spring MVC项目。我正在使用Hibernate。我想将AJAX与jQuery结合使用,以从Spring Controller中获取一些JSON。不幸的是,当我在应用程序中实现方法时,出现了一个错误: 我必须使用哪种适配器以及以哪种方式使用?该方法的最后一行发生了错误: 这是我在Spring MVC项目中与Hibernate一起使用的班级: 编辑 我想知道:我的对象是代
如何正确转换dto到json在Java?我这样做就像下面使用: 问题在于格式化字段。在Dto我有我的日期在这种格式:但转换此dto到json字节后,我看到我的拆分为对象与许多属性如下: 在使用之后,我希望将中的所有属性以与转换之前相同的格式进行转换。如何做到这一点? 谢谢你的帮助!