私はjavafx v8.0.40を使用してデスクトップアプリケーションを開発しています。私はinno 5でexeファイルを作成しました。自分のコンピューターでexeファイルを実行すると、問題なくインストールされて実行されます。一方、他のコンピューターにインストールして実行しようとすると、インストールの最後に、「ダイアログを呼び出すエラー」というウィンドウダイアログがポップアップ表示され、[OK]をクリックします。 「jvmの起動に失敗しました」という別のウィンドウがポップアップします。私はインターネット全体を検索しましたが、このトピックについてはあまり見つけることができませんでした。私はこの問題の解決策を得ることを望んでいます。前もって感謝します。
私も同じ問題に遭遇しました。以下は私のために働き、私が爆発した「エラー呼び出しメソッド」を理解するのに役立ちました。および「JVMの起動に失敗しました」ダイアログ:
.jar
_ファイルを見つけますAppData\Local\{ApplicationTitle}\app
_(shortcut:type%appdata%into Explorer);にあります。プロジェクトの名前がHelloWorldの場合、_HelloWorld.jar
_が見つかりますcd
と同じですコマンドプロンプトを使用してディレクトリ).jar
_を実行しますJava -jar "HelloWorld.jar"
_と入力してヒット EnterTadah!あなたの隠された例外を見逃さないでください(「エラー呼び出しメソッド」の存在なので、漠然とあなたに伝えようとします)。 *
あなたの問題が mine に類似している場合、それはプロジェクトのout
フォルダーとインストールディレクトリの間のファイル構造の違いに起因します。そのため、プログラムはエディターで問題なくコンパイルされ、正しくビルドされます。結構です。構築するまで問題はなく、ファイル構造も少し異なります。
*コマンドラインから実行しても何も得られなかった場合は、そのinitialize()
メソッドの実行中に発生している可能性のあるエラーを探します。それはあなたの問題がありそうなところです。 同様の問題、ここ 。に示すようなポップアップ例外ダイアログを使用して、実行時に例外を公開できます。
これはおそらく、出力jarに依存関係がないためです。したがって、アーティファクトにライブラリを追加する必要があります。そうすると、.exeの生成に問題はありません。
これはIntellijの例で、ライブラリは「利用可能な要素」からアーティファクトに手動で移動されています
この質問は少し古いですが、今日私はまったく同じ問題に直面し、これら以外のエラーメッセージを検索する解決策を見つけることができませんでした。
問題はほぼ同じです:Java 8を使用してJavaFXアプリケーションをビルドし(dev pcで正常に実行)、Inno 5を使用してネイティブインストーラー(exe)にパッケージ化しました)アプリケーションは一部のマシンで正常に実行されました-他のものではエラーメッセージに正確にそれらで失敗しました:
アプリケーションの起動時に、fxmlローダーは最初のビューコントローラーを読み込み、その「初期化」メソッドを呼び出します。初期化内で、処理されない例外がスローされている場合、アプリケーションがクラッシュし、これらの2つのウィンドウエラーメッセージが表示されます。
これが私のように苦労している人にも役立つことを願っています。
J.Dürrによる応答(16年6月8日9:58に回答)は、私のメソッドの呼び出しエラー&JVMを起動できませんでしたの問題の解決に役立ちました。次のコードを使用して問題を追跡しましたが、これは誤ったFXMLリソースパスであることが判明しました。
public static void main(final String[] taArgs)
{
try
{
Main.launch(taArgs);
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, e.getMessage());
try
{
PrintWriter pw = new PrintWriter(new File("<somefilename.txt>"));
e.printStackTrace(pw);
pw.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}
私はこの問題を抱えていて、@ Brad Turekの答えは私を正しい方向に向けました。例外をスローしたのは私のコードではなかったことを除いて。
アプリケーションの起動に.exeラッパーが使用した.cfgファイル(/<app_name>/app/<app_name>.cfg
)は、/lib
ディレクトリに存在しないlibs(jarファイル)を誤って指しています。これにより(私は結論しました)、クラスローダーが起動をスローして終了しました。
.cfgファイルを修正した後、すべてが正常に機能しました。
私は問題を修正できませんでしたが、回避策を見つけました。メモ帳を使用して、アプリを起動するためのバッチファイルを作成しました。最初にcd
を使用して.jar
ファイルのディレクトリに移動し、次にJava -jar
を使用してアプリを起動しました。次のようになります。
cd C:\[wherever your project folder is located]\[name of project]\dist
Java -jar [name of project].jar
デスクトップに.bat
ファイルとして保存し、バッチファイルを起動すると、プログラムが起動します。
ビルドにサードパーティライブラリを含めなかった場合、このエラーが発生する可能性があります。
以下は、プロジェクトの終了タグの直前のbuild.xmlに配置できます。
<target name="-post-jfx-deploy">
<fx:deploy width="${javafx.run.width}" height="${javafx.run.height}" nativeBundles="all"
outdir="${basedir}/${dist.dir}" outfile="${application.title}">
<fx:application name="${application.title}" mainClass="${javafx.main.class}"/>
<fx:resources>
<fx:fileset dir="${basedir}/${dist.dir}" includes="*.jar"/>
<fx:fileset dir="${basedir}/${dist.dir}" includes="lib/*.jar"/>
</fx:resources>
<fx:info title="${application.title}" vendor="${application.vendor}"/>
</fx:deploy>