1

使用 Java 1.7.25(安全设置为最低,32 位,如果重要的话),Windows 8,谷歌浏览器。

我写了一个需要加载一些图像的小程序。一切都打包在 jar 中,html 文件如下所示:

<html>
 <body>
   <applet code="package.AppletRun.class"
           archive="appletJar.jar" width="1100" height="700">
   </applet>
 </body>
</html>

我尝试使用几种技术加载图像:

  • Image image = applet.getImage(applet.getCodeBase());
  • Image image = getClass().getResource("relative/package/filename");
  • Image image = getClass().getResource("/absolute/package/filename");
  • Image image = getClass().getResource("filename"); //same package
  • Image image = someStrangeThingsICantEvenRemeber();

问题是一切正常(我设置不加载任何图像)但图像只是不想加载,控制台显示javaNullPointerException。在 Eclipse 中没有问题,applet viewer 不会抱怨。如何将图像从 jar(类文件相同)加载到我的小程序?

更重要的是applet.getCodeBase()返回null并且我 100% 确定我没有自己创建JApplet实例。

4

2 回答 2

2

问题不在于代码,而在于 java(或它的安全设置)。您必须对正在使用的 jar 文件进行自签名。浏览器会抱怨更多警告窗口,但最终它会让加载(查找,访问?)文件使用getClass().getResources(...). 我不知道这个签名改变了什么,但它有效。

于 2013-06-26T00:16:43.597 回答
1

确保 jar 是自签名的或使用公认的证书颁发机构签名的。

来自Oracle Java Applet 教程

部署小程序

要部署 Java 小程序,首先编译源代码,将其打包为 JAR 文件,然后对 JAR 文件进行签名。 使用由公认的证书颁发机构颁发的证书对您的 applet 进行签名可以确保您的用户可以安全地运行 applet。出于测试目的,您可以对小程序进行自签名,这会在小程序运行时生成更强的安全警告。对于生产,请使用由受信任的证书颁发机构颁发的有效的当前代码签名证书。

要了解如何签署 jar:

http://docs.oracle.com/javase/tutorial/deployment/jar/signing.html

于 2013-06-26T00:27:21.530 回答