我正在构建一个视频游戏,我也为我的视频游戏构建了一个启动器。启动器下载.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();
}
}
答案 0 :(得分:1)
不确定你是否熟悉这一点但是 我认为你应该看看课程装载机。
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());
}
}
}