gpt4 book ai didi

maven - 如何让 javafx 类进入运行时?

转载 作者:行者123 更新时间:2023-12-04 20:10:36 26 4
gpt4 key购买 nike

我愿意第一次尝试javafx,我去了Oracle javafx 站点可以找到 javafx 现在随 JDK 7u25 一起提供。我更新了我的 java 版本,但我不确定我在找什么。每当我尝试导入和使用 javafx 类时,都会出现“找不到符号”错误。我在 %JAVA_HOME%/lib 中找到了“javafx-mx.jar”“javafx-doclet.jar”“ant-javafx.jar”文件,但据我所知,这些文件是由 JRE 而非 JDK 使用的。我真的不想依赖任何 eclipse 插件。我使用 maven 进行构建过程。我见过几个 javafx maven 插件,但它们似乎针对 javafx 工具。我是不是看错了图片?我如何才能正确导入这些类?

编辑

现在我可以使用我发现的 here 来编译项目.建议添加:

<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2.2</version>
<scope>system</scope>
<systemPath>${java.home}/lib/jfxrt.jar</systemPath>
</dependency>

这解决了我的构建问题,但我无法运行该程序,我正在尝试运行这个简单的 example ,但我收到此错误:
java.lang.NoClassDefFoundError: javafx/application/Application
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

关于如何将相同的库添加到运行时的任何想法?我正在使用 maven-exec-plugin .

最佳答案

不建议仅将 jfxrt.jar 设为 maven 系统依赖项

我不认为通过系统依赖于 jfxrt.jar 将 maven 与您的 JavaFX 构建集成是一个好主意。

使用该方法,您将能够构建您的应用程序(因为 javafx 运行时类的系统依赖性将允许 maven 找到它们)。

但是当您使用 Java 7 运行您的应用程序时,您仍然需要手动将类路径添加到您的 java.exe 命令中,类似于 Compile code using JavaFX 2.0 (using command line) .

我不使用 maven exec 插件,但请参阅 add a jar to maven exec:java classpath ,如果您想以这种方式使用该工具,它提供了有关为该 exec 插件设置适当类路径的说明。

首选方法

首选方法是使用推荐的部署工具(例如 JavaFX ant tasksjavafxpackagerjavafx-maven-pluginjavafx-gradle-plugin )正确打包您的应用程序。

这些工具将在您的应用程序 jar 中嵌入一个小的包装器主类,如果它可用,它将找到 JavaFX 运行时或帮助指导用户完成运行时安装(如果它不可用)。

另外,如果您使用 Oracle Java 8 , javafx 将在您的默认类路径上,因此您无需担心与类路径相关的问题。

关于maven - 如何让 javafx 类进入运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17734396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com