java - 从已签名的小程序加载 Java 类

标签 java applet signed download

如果我正在运行签名的 Java 小程序。我可以从同一域甚至同一主机中的远程源加载其他类并运行它们吗?

我想在不更改页面甚至不停止当前小程序的情况下执行此操作。当然,所有类的总大小太大,无法一次全部加载。

有没有办法做到这一点?有没有办法对已签名的小程序执行此操作并保持其“信任”状态?

最佳答案

我认为小程序中的类是延迟加载的。按需加载。

无论如何,如果类在 jar 之外,您可以简单地使用 applet 类加载器并按名称加载它们。例如:

ClassLoader loader = this.getClass().getClassLoader();
Class clazz = loader.loadClass("acme.AppletAddon");

如果您想从 jar 加载类,我认为您需要使用 jar(s) 的 url 创建一个新的 URLClassLoader 实例。

URL[] urls = new URL[]{new URL("http://localhost:8080/addon.jar")};
URLClassLoader loader = URLClassLoader.newInstance(urls,this.getClass().getClassLoader());
Class clazz = loader.loadClass("acme.AppletAddon");

默认情况下,小程序被禁止创建新的类加载器。但是,如果您签署您的小程序并包含创建新类加载器的权限,您就可以做到。

关于java - 从已签名的小程序加载 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60470/

相关文章:

spring - 假装客户端签名端点

assembly - 在程序集中添加有符号数字

java - 如何使用小程序转换JSON数据?

java - NullPointerException 和 BufferedReader

java - spring boot + junit + 重写的组件实例

java - 流程卡在流程构建器上

Java 卡转换器 : unsupported class file format of version 50. 0

java - 我应该如何测试 JApplets 和 Applets?

java - Libgdx 视锥体剔除 actor.draw() 内

java - 我如何在Java中将外部数据放入数组中