使用newInstance从网站加载Java类?
我的程序的工作方式:使用newInstance从网站加载Java类?,java,Java,我的程序的工作方式: 连接到服务器 获取字符串 解密字符串 寄回去 我正在使用从服务器下载的类进行解密。该类每次都会更改,并且应该在每次启动程序时下载 是的!在名为etc/etc/client/file.class的包中 当我在eclipse中测试它时,它工作得完美无缺,因为包文件夹是可以访问的 但是当我想导出为runnable.jar时,我该怎么做呢?那我就不能在文件夹里写东西了 加载类的行: (该类扩展了已在文件夹中的Base64) 加载newInstance()之前,我正在将类下载到的文件
newInstance()
之前,我正在将类下载到的文件夹:
在eclipse中工作得非常完美,但我不知道如何在导出到.jar时使其工作您必须使用新的类加载器加载该类
public void go() throws Exception {
ClassLoader cl = new URLClassLoader(new URL[] { new URL("file:///home/ben/") }, this.getClass().getClassLoader());
Class decoderclass = cl.loadClass("etc.sec.client." + handlerClass);
etc.sec.client.Base64 decode = (etc.sec.client.Base64)decoderclass.newInstance();
System.out.println(decode.toString());
}
如果将您的课程下载到:
/home/ben/etc/sec/client/
这应该可以很好地实例化类。当然,您必须使用编译时可用的接口,
etc.sec.client.Base64必须是一个接口,或者您的处理程序类必须从中继承。这个问题有一个很好的加载程序实现,您应该看看:
public void go() throws Exception {
ClassLoader cl = new URLClassLoader(new URL[] { new URL("file:///home/ben/") }, this.getClass().getClassLoader());
Class decoderclass = cl.loadClass("etc.sec.client." + handlerClass);
etc.sec.client.Base64 decode = (etc.sec.client.Base64)decoderclass.newInstance();
System.out.println(decode.toString());
}
/home/ben/etc/sec/client/