【发布时间】:2011-02-03 12:42:02
【问题描述】:
我在服务器上有一个 jar,用户应该能够为它开发扩展。因此应该扩展 jars 主类,并且应该将一些资源添加到第二个用户创建的 jar 中,该 jar 将从另一台服务器或本地加载。现在我在从用户加载的 jar 中访问资源(图像)时遇到问题。结构如下:
我的服务器: game.jar 包含 游戏类 图像类 ... image1.png (...) 当地的: user.jar 包含: user.class 扩展游戏 用户图像.png扩展是通过 Greasemonkey 加载的,它将“archive”属性修改为“/home/username/user.jar,game.jar”,将“code”属性修改为“user.class”。用户应该能够覆盖已经定义的图像。如果图片在 game.jar 中不存在,则从 user.jar 中正确加载。但是游戏早期加载的图像总是从game.jar加载的,其他的似乎被用户正确覆盖了。有没有办法确保它们总是以正确的顺序加载?这可能是因为某些缓存机制。因为 Greasemonkey 从页面中删除了游戏,更改了存档和代码并重新插入,所以游戏在没有模组的情况下加载了一秒钟。在那个时候,图像会按预期从游戏 jar 中加载,但那些是用户不可覆盖的图像。但是如何避免呢?
另一件事: 如果我覆盖 user.class 中的“运行”方法,游戏根本无法加载任何图像。不是来自 user.jar 也不是来自 game.jar。 Java 找不到图像,因为 URL 对象“getClass().getResource(imagename)”返回 null。我试图覆盖 image.class,但这并不能解决问题,除非我覆盖 game.class 中涉及调用 image.class 的每个类
【问题讨论】:
标签: java security jar applet classpath