【问题标题】:JavaFX 2.0 + NetBeans + MavenJavaFX 2.0 + NetBeans + Maven
【发布时间】:2011-10-29 15:47:54
【问题描述】:

我正在使用 NetBeans 7.0.1 创建 JavaFX 2.0 应用程序。当我以标准方式创建项目时,一切正常。不幸的是 ;) 我需要 Maven 项目...

我没有在 Maven 存储库中找到 JavaFX 2.0,所以我的 pom.xml 现在看起来像这样:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <groupId>mygroup</groupId>
    <artifactId>ui</artifactId>
    <version>0.1</version>
    <name>My Project</name>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javafx</groupId>
            <artifactId>jfxrt</artifactId>
            <version>2.0</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>${env.JAVAFX_HOME}\lib\jfxrt.jar</systemPath>
        </dependency>
    </dependencies>
</project>

JAVAFX_HOME 系统变量已设置:

C:\Users\rach>echo %JAVAFX_HOME%
C:\Program Files\Oracle\JavaFX Runtime 2.0\

编译正常,但是当我在 NetBeans 下启动程序时出现错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application at java.lang.ClassLoader.defineClass1(Native Method)

但是 jfxrt.jar 在类路径中:

C:\>echo %CLASSPATH%
C:\Program Files\Oracle\JavaFX Runtime 2.0\lib\jfxrt.jar

当我从命令行启动我的应用程序时,它工作正常。

当我在运行时将 jfxrt.jar 安装到本地存储库中时,应用程序仍然无法启动,因为它找不到 C:\Program Files\Oracle\JavaFX Runtime 2.0\bin\mat.dll。 Pom.xml:

<dependency>
    <groupId>javafx</groupId>
    <artifactId>jfxrt</artifactId>
    <version>2.0</version>
    <type>jar</type>
</dependency>

效果:

Exception in thread "main" java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Can't load library: C:\Repositories\MavenRepo\javafx\jfxrt\bin\mat.dll at com.sun.javafx.tk.quantum.QuantumToolkit.startup(Unknown Source)

有什么想法吗?

【问题讨论】:

    标签: netbeans maven javafx-2


    【解决方案1】:

    目前,这似乎是一个可行的解决方案..

    首先,安装jfxrt.jar:

    mvn install:install-file -Dfile=jfxrt.jar -DgroupId=com.oracle -DartifactId=javafx-runtime -Dpackaging=jar -Dversion=2.0
    

    然后将 bin 文件夹从下载的 JavaFX 运行时复制到本地 Maven 存储库 (home/.m2/repository/com/oracle/javafx-runtime/)

    不是很优雅,但对我有用..

    【讨论】:

      【解决方案2】:

      感谢您的帮助。

      这里使用JavaFX 2.0 SDK的人步骤很简单

      1. 在您的 shell 中转到 JavaFX 2.0 SDK\rt\lib(命令提示符)

      2. 执行 mvn install:install-file -Dfile=jfxrt.jar -DgroupId=com.oracle -DartifactId=javafx -Dpackaging=jar -Dversion=2.0

      3. 将 bin 文件夹从 JavaFX 2.0 SDK\rt\ 目录复制到 .m2\repository\com\oracle\javafx 目录

      4.<dependency>
      <groupId>com.oracle</groupId> <artifactId>javafx</artifactId> <version>2.0</version> <scope>compile</scope> </dependency>

      【讨论】:

      • 我的 bin 文件夹只包含一个文件:javafxpackager (mac)。这个可以吗?我应该将它复制到 ../javafx/ 还是 ../javafx/bin ?不幸的是,它不起作用 :-( 异常:原因:org.gradle.api.internal.artifacts.ivyservice.ModuleVersionNotFoundException:找不到组:com.oracle,模块:javafx,版本:2.0
      【解决方案3】:

      对于当前带有 Java FX 2.0 的 Java 7 的最佳答案是:

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

      并将其添加到 NetBeans 中使用的 Maven 配置文件的“运行项目”操作中:

      exec.classpathScope=compile
      

      您还可以将其与“调试项目”、“配置文件项目”、“通过 main() 运行文件”、“通过 main() 调试文件”和“通过 main() 配置文件”操作一起使用 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-27
        • 2020-04-03
        • 1970-01-01
        • 2012-06-27
        • 2013-12-07
        • 2012-01-16
        • 1970-01-01
        • 2020-06-05
        相关资源
        最近更新 更多