2013-06-26 208 views
1

使用Java 1.7.25(安全设置为最小值,32位,如果有的话),Windows 8,Google Chrome。Applet无法从jar中加载文件

我写了一个Applet,它需要加载一些图像。一切都装在罐子和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查看器不会投诉。我怎样才能加载图像从jar(类文件相同)到我的小程序?

更重要的是applet.getCodeBase()回报,我100%肯定,我不是创造JApplet的实例自己。

回答

2

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

+0

你应该接受你自己的答案=) – earcam

1

确保该罐子是自签名的或使用认可的认证中心签名。

Oracle Java Applet Tutorial

部署一个Applet

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

要了解如何注册的jar:

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

+0

“出于测试目的,可以自行注册的小程序,产生更强的安全性警告,当小程序运行“。更强的安全警告,但我想削弱他们。 –

+1

@MichałDębski对于不需要不可信组件的应用程序和小应用程序,应该使用Trusted-Only属性。将不会显示警告对话框,并且加载包含此属性的jar文件的应用程序或小程序将不会加载任何不受信任的类或资源。在这里检查更多:http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/mixed_code.html –

+0

我试着添加Trusted-Only而不是我得到安全异常。我猜图像是不可信任的组件或外部库,因为使用Trusted-Libraries,我得到的类没有发现异常。 –