Applet无法从jar加载文件

时间:2013-06-26 00:16:44

标签: java jar applet japplet

使用Java 1.7.25(安全设置为最低,如果重要,则为32位),Windows 8,Google Chrome。

我写了一个需要加载一些图像的Applet。所有东西都装在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中?

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

来自Oracle Java Applet Tutorial

部署Applet

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

要了解如何签署jar:

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