gpt4 book ai didi

java - 如何从另一台计算机的外部 .jar 获取类?

转载 作者:行者123 更新时间:2023-12-01 13:48:12 24 4
gpt4 key购买 nike

我正在构建一个视频游戏,并且我也为我的视频游戏构建了一个启动器。启动器会下载 .jar 文件并将其存储在每个购买游戏并下载启动器然后运行它的人的 %appdata% 文件夹中。

我需要能够编写几行代码来告诉启动器从用户的计算机获取 .jar 文件并从那里运行文件。 .jar 已经编译完毕,一切都很好,但我不太确定如何使用 .class 文件。

这样的事情可能会有所帮助:

import System.getPropery("user.home") + "/AppData/Roaming/GameNameHere/bin/game.jar" + ".runGame.class"

然后我可以做这样的事情:

if (credentials == true) {
runGame game = new runGame();
game.start();
}

我该如何做这样的事情?提前致谢。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

因此,我查看了 ClassLoader.java 类并对其进行了一些修改,但没有任何效果真正有效。我做错了什么?

private String location = System.getProperty("user.home") + "\\Desktop\\myJar.jar";
URL url = new URL(location);

public Load() throws Exception {
ClassLoader loader = URLClassLoader.newInstance(new URL[]{url}, getClass().getClassLoader());
Class<?> clazz = Class.forName("gumptastic.MyClass", true, loader);
Method method = clazz.getMethod("output");
method.invoke(this);
}

public static void main(String[] args) {
try {
new Load();
} catch (Exception exc) {
exc.printStackTrace();
}
}

最佳答案

不确定您是否熟悉这一点,但是我认为你应该看看类加载器。

http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html

我想您需要为您的特定需求编写一个简单的。

或者,如果您只使用 URLClassLoader,会更容易。下面是一个简单的例子。该程序不知道 Gson 类在编译时。但它可以成功加载它,创建它的实例,并在运行时使用它。它在 Windows 7 上进行了测试。

您可以从此处下载 Google Gson。 http://code.google.com/p/google-gson/downloads/list

然后将 gson-2.2.4.jar 文件放置在您喜欢的任何位置在您的计算机上,然后通过以下方式将此程序指向它以正确的方式设置 arr[0]。

然后观察正在发生的魔法:)

import java.lang.reflect.Constructor;
import java.net.URL;
import java.net.URLClassLoader;


public class Test007 {

public static void main(String[] args) throws Exception {
URL[] arr = new URL[1];
arr[0] = new URL("file:///dir1/dir2/dir3/gson-2.2.4.jar");
URLClassLoader loader = new URLClassLoader(arr);
Class cls = loader.loadClass("com.google.gson.Gson");
System.out.println(cls);
Constructor constructor = cls.getConstructor(new Class[0]);
Object obj = constructor.newInstance(new Object[0]);
System.out.println(obj);
if (obj!=null){
System.out.println("OK, so now we have an instance of:");
System.out.println(obj.getClass().getName());
}
}

}

关于java - 如何从另一台计算机的外部 .jar 获取类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com