簡體   English   中英

啟動外部JAR文件需要什么,比如Minecraft啟動程序?

[英]What is needed to launch external JAR files, like the Minecraft launcher?

如果你從未玩過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();

Runnable JAR需要一個Manifest來指示要使用的主類。 從eclipse導出時,一個選項是選擇運行配置(例如,從之前的測試運行),eclipse使用該信息填充清單。

更新:在考慮了它之后,基於上面的輸出和下面的注釋,我的猜測是你試圖使用命令行中的'java'命令運行jar。 如果是這種情況,您需要使用:
java -jar launcher.jar
不:
java launcher.jar

這是我認為你看到的復制品:

C:\\ Users \\ Tim \\ Desktop> java launcher.jar
線程“main”中的異常java.lang.NoClassDefFoundError:launcher / jar引起:
java.lang.ClassNotFoundException:launcher.jar
在java.net.URLClassLoader $ 1.run(未知來源)
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)
找不到主類:launcher.jar。 程序將會退出。

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

// 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());

您應該嘗試使用Java Decompiler

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM