9

JavaFX アプリをデプロイしようとしています。私が取り組んできたアプリはかなり複雑で、いくつかのライブラリが含まれています。jnlp を作成して実行しようとすると、常に「実行時エラーです。クリックして詳細を確認してください」というメッセージが表示されます。誰かが、含まれているライブラリに問題があるかどうかを確認するために、単純な Hello World アプリを試してみることを提案しました。試してみましたが、まだ「ランタイム エラー」が発生します。

これが私が使用しようとしているbuild.xmlです。

    <project name="App" default="default" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
        <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
             uri="javafx:com.sun.javafx.tools.ant"
             classpath="C:\Program Files\Java\jdk7\lib\ant-javafx.jar" />


        <target name="default">
        <fx:deploy width="600" height="400" outdir="${basedir}/dist" outfile="App">
            <fx:application name="App" mainClass="${javafx.main.class}"/>

            <fx:resources>
                <!-- include application jars -->
                <fx:fileset dir="${basedir}" includes="*.jar"/>
                <fx:fileset dir="${basedir}/lib" includes="*.jar"/> 
                <fx:fileset dir="${basedir}" includes="app.ini" />
                <fx:fileset dir="${basedir}/template" includes="*.template" />
            </fx:resources>

            <!-- request user level installation -->
            <fx:preferences install="false"/>
        </fx:deploy>
        </target>
    </project>

Hello World バージョンでは、この<fx:resources>セクションを削除しました。アリのタスクとしてEclipse内から両方を実行します。彼らは両方とも、私のプロジェクトに .jnlp と .html ファイルを含む dist フォルダーを作成しました。次に、jnlp をクリックしてアプリを実行すると、小さなウィンドウに「ランタイム エラーです。クリックして詳細を確認してください。」というテキストが表示されます。クリックすると、「アプリケーションの実行に失敗しました。アプリケーションの実行中にエラーが発生しました。詳細については、[詳細] をクリックしてください。" [詳細] ボタンをクリックすると、Java コンソールに次の情報 (HelloWorld バージョン) が表示されます。

Java Plug-in 10.7.2.11
Using JRE version 1.7.0_07-b11 Java HotSpot(TM) 64-Bit Server VM
User home directory = C:\Users\user
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------
Match: beginTraversal
Match: digest selected JREDesc: JREDesc[version 1.6+, heap=-1--1, args=null,         href=http://java.sun.com/products/autodl/j2se, sel=false, null, null], JREInfo: JREInfo for index 0:
platform is: 1.7
product is: 1.7.0_07
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files\Java\jre7\bin\javaw.exe
args is: null
native platform is: Windows, amd64 [ x86_64, 64bit ]
JavaFX runtime is: JavaFX 2.2.1 found at C:\Program Files\Java\jre7\
enabled is: true
registered is: true
system is: true

Match: ignoring maxHeap: -1
Match: ignoring InitHeap: -1
Match: digesting vmargs: null
Match: digested vmargs: [JVMParameters: isSecure: true, args: ]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: ]
Match: digest LaunchDesc: file:/G:/workspaces/JavaProjects/JavaFXHelloWorld/dist/HelloWorld.jnlp
Match: digest properties: []
Match: JVM args: [JVMParameters: isSecure: true, args: ]
Match: endTraversal ..
Match: JVM args final: 
Match: Running JREInfo Version    match: 1.7.0.07 == 1.7.0.07
Match: Running JVM args match: have:<>  satisfy want:<>
CacheEntry[file:/G:/workspaces/JavaProjects/JavaFXHelloWorld/dist/HelloWorld.jnlp]:    updateAvailable=false,lastModified=Fri Sep 14 07:13:28 MDT 2012,length=915

作業中のアプリを実行すると、ほぼ同じエラーが発生します。Java をアンインストールしてから、最新の SDK を再インストールしました。インストールした32ビットJVMの代わりにアプリが64ビットJVMを使用する可能性があることを除いて、それは何もしませんでした。エラーメッセージは同じままでした。

私が間違っていることを誰かが知っていますか?私のビルドスクリプトは間違っていますか? 展開するより良い方法はありますか? 私は jnlp を持っている必要はないので、どんなデプロイ方法にもオープンです。WindowsマシンとおそらくMacで実行できるものが必要です。

私は自分の問題をグーグルで検索しようとしましたが、StackOverflow を検索しましたが、関連するものが見つからないようです。間違った検索用語を使用している可能性があります。

どんな助けでも大歓迎です。

ありがとう、ハーディ

4

2 に答える 2

2

netbeans を使用している場合は、プロジェクトを右クリックして [プロジェクトのプロパティ] に移動し、[ライブラリ] に移動して [プラットフォームの管理] をクリックし、[デフォルトの Javafx プラットフォーム] を選択して [JAVAFX] タブに移動し、JAVAFX SDK の場所を Java fx 2 SDK がある場所に変更します。また、JAVAFX JRE も同様に変更します。これで問題が解決することを願っています。

于 2013-02-15T18:28:20.143 に答える
1

最終的に、私の場合、この問題は jar 署名プロセスのバグが原因であることがわかりました。この問題は、Java キャッシュを空にすることで回避できます (Windows では、これは Java コントロール パネルから実行できます)。そうして再構築した後、私の場合、エラーは発生しなくなりました。

ただし、署名を行っていないように見えるため、これで問題が解決するかどうかはわかりません。

于 2013-02-16T20:26:54.220 に答える