使用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 实例。
答案 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