【发布时间】:2020-02-17 14:30:01
【问题描述】:
我为一个学校项目编写了一个 JavaFX 程序。没什么特别的。但从一开始我就犯了一个大错误。我为该项目选择了 SDK 版本 1.8。 现在我已经完成了,我尝试使用构建工件获取我的项目的 jar。那行得通,但是当我打开罐子时,什么也没有发生。在意识到我使用了 SDK 1.8 之后,我尝试使用 JavaFX SDK 13 和 JDK 13 将所有内容复制到一个新项目中。 但我不能以这种方式运行它。只是得到“通常”的 JavaFX 错误:
/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/bin/java --module-path /Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=51795:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/target/classes:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx-swt.jar:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx.base.jar:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx.controls.jar:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx.fxml.jar:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx.graphics.jar:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx.media.jar:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx.swing.jar:/Library/Java/JavaVirtualMachines/javafx-sdk-13.0.1/lib/javafx.web.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/appdirs-1.0.3.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/slf4j-api-1.7.25.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/jna-platform-4.5.2.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/jna-4.5.2.jar:/Users/marcelschalk/Downloads/sqlite-jdbc-3.27.2.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/javafx-maven-plugin-0.0.3.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-plugin-api-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-model-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-artifact-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/org.eclipse.sisu.plexus-0.3.3.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/cdi-api-1.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/jsr250-api-1.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-utils-3.1.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-classworlds-2.5.2.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-java-0.9.11.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/asm-7.0-beta.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/qdox-2.0-M9.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-archiver-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-io-3.0.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/commons-io-2.6.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/commons-compress-1.16.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/objenesis-2.6.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/snappy-0.4.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/xz-1.8.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/commons-exec-1.3.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/mojo-executor-2.3.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/slf4j-api-1.7.22.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/slf4j-simple-1.7.22.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-core-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-settings-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-settings-builder-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-interpolation-1.25.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-sec-dispatcher-1.4.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-cipher-1.4.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-builder-support-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-repository-metadata-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-model-builder-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-resolver-provider-3.6.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-resolver-impl-1.3.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-resolver-api-1.3.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-resolver-spi-1.3.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-resolver-util-1.3.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/maven-shared-utils-3.2.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/org.eclipse.sisu.inject-0.3.3.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/guice-4.2.1-no_aop.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/aopalliance-1.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/guava-25.1-android.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/jsr305-3.0.2.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/checker-compat-qual-2.0.0.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/error_prone_annotations-2.1.3.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/j2objc-annotations-1.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/animal-sniffer-annotations-1.14.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/javax.inject-1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/plexus-component-annotations-1.7.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/commons-lang3-3.8.1.jar:/Users/marcelschalk/OneDrive - stud.hs-merseburg.de/Proggen/Manager/lib/jfoenix-8.0.8.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-controls/13/javafx-controls-13.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-controls/13/javafx-controls-13-mac.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-graphics/13/javafx-graphics-13.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-graphics/13/javafx-graphics-13-mac.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-base/13/javafx-base-13.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-base/13/javafx-base-13-mac.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-fxml/13/javafx-fxml-13.jar:/Users/marcelschalk/.m2/repository/org/openjfx/javafx-fxml/13/javafx-fxml-13-mac.jar:/Users/marcelschalk/.m2/repository/net/harawata/appdirs/1.0.3/appdirs-1.0.3.jar:/Users/marcelschalk/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar:/Users/marcelschalk/.m2/repository/net/java/dev/jna/jna-platform/4.5.2/jna-platform-4.5.2.jar:/Users/marcelschalk/.m2/repository/net/java/dev/jna/jna/4.5.2/jna-4.5.2.jar:/Users/marcelschalk/.m2/repository/org/slf4j/slf4j-simple/1.7.28/slf4j-simple-1.7.28.jar" sample.Main
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/marcelschalk/OneDrive%20-%20stud.hs-merseburg.de/Proggen/Manager/lib/slf4j-simple-1.7.22.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/marcelschalk/.m2/repository/org/slf4j/slf4j-simple/1.7.28/slf4j-simple-1.7.28.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:830)
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3230)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106)
at sample.Main.start(Main.java:53)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
Exception running application sample.Main
Process finished with exit code 1
我现在真的不知道该怎么办......
这些是在 JDK 1.8 下的 Intellij 中工作的文件: https://drive.google.com/file/d/1DTtntPrh-9pkgrwyrHi9im3B2IAYeZoa/view?usp=sharing
这是不工作的重建项目: https://drive.google.com/file/d/1gPRzxV32OAUZct4w1lF-Y3WTv7lR-BCF/view?usp=sharing
项目结构:
【问题讨论】:
-
“刚刚出现‘常见的’JavaFX 错误”——请编辑您的问题并显示该异常的整个堆栈跟踪,包括所有“原因:”部分。
-
问题本身必须包含minimal reproducible example。链接到另一个站点或此站点上的另一个帖子是不够的。在您的情况下,初始化 fxml 加载器并且需要项目结构的部分。但是,如果您搜索错误消息 (
Location is required.),应该已经有很多关于此的问题,我很确定已经有一个涵盖您的情况的答案。 -
您的
fxml文件似乎未包含在 jar 文件中:Caused by: java.lang.NullPointerException: Location is required.。你确定你正在运行一个罐子吗?在模块系统中,jar 不能拆分为多个文件。 -
您在
src/main/java下拥有一些 FXML 文件这一事实令人怀疑。当使用 Maven 的 Standard Directory Layout(Gradle 默认也使用该布局)时,资源属于src/main/resources。我不确定这是如何工作的,即使在 IntelliJ 中也是如此,因为 Maven 应该忽略src/main/java下的资源文件。 -
Java 8 和 Java 9+ 关于资源检索的唯一区别在于模块间可见性(即 封装);由于您没有使用模块,更不用说多个模块,因此这种差异不会影响您。换句话说,在 Java 8 中运行的应该在 Java 13 中运行。在复制项目时您必须更改了某些内容。但是,如果没有minimal reproducible example(在问题本身中),帮助您将很难甚至是不可能的。还有,为什么要复制项目而不是更新JDK版本?
标签: java intellij-idea javafx java-8 build