6

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)

何か案は?

4

3 に答える 3

5

ご協力ありがとうございました。

ここで JavaFX 2.0 SDK を使用している人は簡単な手順です

  1. シェル (コマンド プロンプト) で 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>

于 2012-02-20T11:34:18.573 に答える
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

これは、"Debug project"、"Profile Project"、"Run file via main()"、"Debug file via main()"、および "Profile file via main()" アクションでも使用できます :)

于 2013-06-16T17:10:55.483 に答える
2

今のところ、これは機能するソリューションのようです..

まず、jfxrt.jar をインストールします。

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

次に、ダウンロードした JavaFX ランタイムからローカルの Maven リポジトリ (home/.m2/repository/com/oracle/javafx-runtime/) に bin フォルダーをコピーします。

あまりエレガントではありませんが、私にとってはうまくいきます..

于 2011-10-11T08:12:38.977 に答える