申し分なく、アプリケーションを介して実行されるテスト ゲームを保持する実行可能 jar を作成しました。私にとっては問題なく動作しますが、友人にとってはそうではありません。メインクラスが見つからないと言われています。それで、彼はJava jdkか何かをインストールする必要がありますか? これを回避する方法はありますか?
4 に答える
たとえば、彼はJVMに対して間違ったコマンドライン引数を使用してJavajarを実行している可能性があります。次に、jarファイルをビルドしたときにメインクラスを正しく定義できなかった可能性があります(「jarファイルのメインクラスをロードできません」を参照)。
これを回避する方法は?上記のリンクでは、JVMの実行方法に大きな違いをもたらす、JVMに提供できるコマンドラインパラメーターがいくつかあることがわかります。これらのコマンドラインパラメーターを使用して、エンドユーザーがプログラムを正しく初期化するために実行できるバッチ(またはシェル)ファイルを作成します。
コンピューターのセットアップが異なるため、「。jar」タイプのファイルを処理するシェル拡張子も異なる場合があります。
マシンに Java (JRE) の最新バージョンをインストールしてみて (アプリケーションがコンパイルされたバージョンと同じかそれ以上のバージョンであることを確認してください)、異なるアーキテクチャ (x86 / x64) を使用している場合は、ライブラリの正しいバージョン。JRE 6u7 を搭載したマシンに JDK 7u7 アプリケーションをデプロイしたため、昨日だけこのエラーが発生しました。
- 新しい JRE をインストールします。
- jar の実行中に、コマンドでクラスパスを指定していることを確認してください。例えば。java -cp asd -jar file.jar
はい、それを回避する方法があります。次のスクリプトを実行します。
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
:: this .bat script creates a file association for executable .jar files
ECHO Creating .jar file association...
ECHO JAVA_HOME is %JAVA_HOME%
IF NOT DEFINED JAVA_HOME GOTO :FAIL
REG ADD "HKCR\jarfile" /ve /t REG_SZ /d "Executable Jar File" /f
REG ADD "HKCR\jarfile\shell" /ve /f
REG ADD "HKCR\jarfile\shell\open" /ve /f
ECHO REG ADD "HKCR\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
REG ADD "HKCR\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%**" /f
REG ADD "HKLM\jarfile" /ve /t REG_SZ /d "Executable Jar File" /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open" /ve /f
REG ADD "HKLM\SOFTWARE\Classes\jarfile\shell\open\command" /ve /t REG_SZ /d "\"%JAVA_HOME%\bin\javaw.exe\" -jar \"%%1\" %%*" /f
ECHO Finished creating .jar file association for executable .jar files.
PAUSE
GOTO EOF
:FAIL
ECHO Script failed. JAVA_HOME not defined.
PAUSE