5

Minecraft をプレイしたことがない場合、これがランチャーの仕組みです。

ユーザーは JAR (または EXE にパッケージ化された JAR) をダウンロードできますが、これには Minecraft クライアント用のコードはまったく含まれていません。これはランチャーと見なされます。ランチャーが起動すると、ニュースなどのログイン画面が表示されます。ログイン後、ランチャーは Minecraft のメイン コアである minecraft.jar を実行します。システムに存在しない場合は、ダウンロードします。Minecraft ランチャーを実行するために、外部の Java ライブラリも必要ありません。

これはどのように行うのですか?

現在、機能を複製しようとしていますが、Eclipse で実行可能な JAR としてエクスポートすると、起動しようとすると、「メイン クラス launcher.jar が見つかりませんでした。プログラムは終了します」と出力されます (これはコンソールにあります)。 、JAR をダブルクリックして起動できるようにしたい)

File file = new File(System.getProperty("user.dir") + "/lessur.jar"); 
System.setProperty("org.lwjgl.librarypath", System.getProperty("user.dir") + "natives");
URLClassLoader classLoader;
classLoader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()});          
classLoader.loadClass("zombie.engine.Lighting2").newInstance();
4

3 に答える 3

3

実行可能な JAR には、使用するメイン クラスを示すマ​​ニフェストが必要です。Eclipse からエクスポートする場合、実行構成を (たとえば、以前のテスト実行から) 選択するオプションがあり、Eclipse はその情報を使用してマニフェストを作成します。

更新:上記の出力と以下のコメントに基づいて、もう少し考えた後、コマンドラインから「java」コマンドを使用してjarを実行しようとしていると思います。その場合は、次を使用する必要があります:
java -jar launcher.jar
not:
java launcher.jar

これはあなたが見たと私が思うものの再現です:

C:\Users\Tim\Desktop>java launcher.jar
スレッド「メイン」での例外 java.lang.NoClassDefFoundError: launcher/jar 原因:
​​ java.lang.ClassNotFoundException: launcher.jar
at java.net.URLClassLoader$1.run(ソース不明)
java.security.AccessController.doPrivileged(ネイティブ メソッド)
java.net.URLClassLoader.findClass(ソース不明)
java.lang.ClassLoader.loadClass(ソース不明)
Sun.misc.Launcher$AppClassLoader.loadClass(
java.lang.ClassLoader.loadClass(不明なソース)で
メイン クラス: launcher.jar が見つかりませんでした。プログラムは終了します。

C:\Users\Tim\Desktop>java -jar launcher.jar
ラン

于 2011-11-12T08:31:56.000 に答える
1
// Use the File constructor that will insert the correct separator for the OS
File file = new File(System.getProperty("user.dir"), "lessur.jar"); 
System.out.println( "File exists: " + file.exists() );
File libs = new File(System.getProperty("user.dir"), "natives");
System.out.println( "Libs exists: " + libs.exists() );
System.setProperty("org.lwjgl.librarypath", libs.toString());
于 2011-11-12T23:15:15.830 に答える
0

Java Decompilerを試す必要があります

于 2013-12-11T04:51:15.637 に答える