2011-11-12 10 views
5

あなたがMinecraftをプレイしたことがない人なら、これはランチャーの仕組みがどのように機能するかです。Minecraftランチャーのような外部JARファイルを起動するためには何が必要ですか?

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

どうすればよいですか?

私はEclipseで実行可能なJARとしてエクスポートすると、機能を再現しようとしていますが、起動しようとすると「メインクラスlauncher.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(); 

答えて

3

RunnableをJARファイルには、メインクラスを使用することを示しマニフェストを必要とする)JARをダブルクリックすることができるようにしたいし、それが起動しています。 eclipseからエクスポートする際には、実行構成(例えば、前のテスト実行から)を選択することです。eclipseはその情報を使用してマニフェストを生成します。

更新:以上と以下のコメント出力に基づいて、もう少しそれについて考えた後、私の推測では、コマンドラインから「Javaのコマンドを使用してjarファイルを実行しようとしているということです。その場合は、あなたが使用する必要があります。
java -jar launcher.jar
ない:ここでは java launcher.jar


は、私はあなたに何を考えての再生では、以下を参照してください。

C:\Users\Tim\Desktop>java launcher.jar
Exception in thread "main" java.lang.NoClassDefFoundError: launcher/jar Caused by:
java.lang.ClassNotFoundException: launcher.jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: launcher.jar. Program will exit.

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

+0

エクスポートしたJARマニフェストのMANIFEST.MFの内容は次のとおりです。 - バージョン:1.0 Cラスパス:。 Main-Class:Main – liamzebedee

+0

JARに 'Main.class'(パッケージなし)というクラスがあり、そのクラスに適切な形式の' main'関数が含まれていると思われますか? –

+0

はい実際には – liamzebedee

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()); 
関連する問題