【发布时间】:2019-04-17 23:08:36
【问题描述】:
我是 JavaFX 的新手,但我已经看过很多关于 YT 如何做事之类的教程,包括将 fontawesome 连接到 JavaFX 项目。 我的图标在场景构建器中正确显示,但是当我启动应用程序时 - 有很多错误提示可能找不到库(?)。
SCENE BUILDER 版本: 8.5(因为 fontawesome 图标不适用于更高版本)
Java SDK: 11
Fontawesome 版本: 8.9
我尝试将 jar 文件作为项目结构中的全局库连接 - 这是正确的方法吗?
这是错误(实际上是其中最有价值的部分)
"C:\Program Files\Java\jdk-11.0.2\bin\java.exe" --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.1\lib\idea_rt.jar=63160:C:\Program Files\JetBrains\IntelliJ IDEA 2019.1\bin" -Dfile.encoding=UTF-8 -p "C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.graphics.jar;C:\Users\ekoal\Documents\Aplikacja\DigitalSchoolDiary\out\production\DigitalSchoolDiary;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.web.jar;C:\Users\ekoal\Downloads\fontawesomefx-8.9.jar;C:\Users\ekoal\Documents\Aplikacja\DigitalSchoolDiary\lib\jfoenix-9.0.8.jar" -m DigitalSchoolDiary/main.Launch
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:566)
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:566)
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:834)
Caused by: javafx.fxml.LoadException:
/C:/Users/ekoal/Documents/Aplikacja/DigitalSchoolDiary/out/production/DigitalSchoolDiary/views/LoginUI.fxml
at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
at javafx.fxml/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2863)
at javafx.fxml/javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2707)
at javafx.fxml/javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2676)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2542)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237)
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 DigitalSchoolDiary/main.Launch.start(Launch.java:22)
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(Native Method)
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)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Caused by: java.lang.ClassNotFoundException: de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at javafx.fxml/javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2931)
at javafx.fxml/javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2920)
at javafx.fxml/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2861)
... 20 more
Exception running application main.Launch
Process finished with exit code 1
这是我的 fxml 导入部分字体真棒:
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
编辑:
IML 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="JavaFX11" level="application" />
<orderEntry type="library" name="javaFX11" level="application" />
<orderEntry type="library" name="fontawesomefx-8.9" level="project" />
<orderEntry type="library" name="JFoenix-9.0.8" level="project" />
</component>
</module>
我不确定这是否是您要问的问题 - 因为我现在已经阅读了很多关于依赖项的内容,而且似乎我阅读的越多,我就越困惑。 我已将 JAR 文件添加到模块部分的项目库文件夹中。 我还在其他网站上发现了一个人有类似问题的帖子,最后他说:“我通过将我的 jfoenix 从 8.0.7 更新到版本 9.0.6 解决了这个问题”
不幸的是,它对我不起作用。 请告诉我 - 我是否以正确的方式连接这个库?
【问题讨论】:
-
您是否将库或jar添加到模块依赖项中? jetbrains.com/help/idea/….
-
@CrazyCoder 我刚刚检查了您的建议:1. 转到项目结构中的模块 2. 我看到模块在那里但它们没有“检查” 3. 我检查了它们并单击了“应用”但仍然不起作用 - 相同的输出。
-
选中用于导出,在这种情况下不相关。请分享Minimal, Complete, and Verifiable example。
-
我重新编辑了我的帖子,因为提供部分模块信息代码也是不必要的。而不是它,我发布了用于依赖项的 IML 文件代码 - 我是对的吗?我还更新了我的问题的描述。看来你是理解我问题的人。
-
见stackoverflow.com/a/51670666/104891。看起来您需要 Java 9+ 兼容库而不是 Java 8。
标签: intellij-idea javafx font-awesome