我在我的网站上使用未签名的小程序。自从java 1.6u19混合代码警告开始出现。这很奇怪,因为applet只是一个jar而且它没有使用任何外部资源。
我发现问题是由C:\ Program Files \ Java \ jre6 \ lib \ applet目录中的WMPNS.jar引起的。这是来自Windows媒体播放器的签名jar。 Java正在将它与我的未签名applet一起加载,这会导致警告。删除该文件可以解决问题,但我不能要求我的用户将其删除。
是否有可能以某种方式阻止加载该罐?
从http://download.oracle.com/javase/tutorial/deployment/applet/getStarted.html运行applet时来自java控制台的日志:
Trace level set to 5: all ... completed.
[...]
sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@1a9883d
basic: Plugin2ClassLoader.addURL parent called for file:/C:/Program%20Files/Java/jre6/lib/applet/WMPNS.jar
basic: Plugin2ClassLoader.addURL parent called for http://download.oracle.com/javase/tutorial/deployment/applet/examples/dist/applet_HelloWorld/applet_HelloWorld.jar
此处有人在JRE \ lib \ applet目录中有WMPNS.jar吗?
答案 0 :(得分:1)
我已经确认Andrew Thompson的诊断,这是由WMPNS.jar引起的。 我向Oracle报告了一个错误:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7031651
但截至撰写本文时,尚未出现在公共数据库中。 (实际上,这是微软的错误 - 他们不应该在该位置粘贴已签名的JAR,但只有Oracle能够立即解决问题;并且Oracle曾经改变规则以警告混合代码生成任何对话框。)
如果它出现了,请投票支持!
答案 1 :(得分:0)
我发现问题是由C:\ Program Files \ Java \ jre6 \ lib \ applet目录中的WMPNS.jar引起的。这是来自Windows媒体播放器的签名jar。
此框中该位置的applet目录不包含任何存档,更不用说来自Microsoft的已签名存档。
鉴于MS过去与Java / Sun的“互动”,我建议您搜索计算机的磁盘以查找恶意软件。请注意,我在IE上使用FF,这可能是此实例中问题的根源。
答案 2 :(得分:0)
非常感谢OP。 这一直困扰着我多年。包括我自己的未签名的Java小程序都产生了这个警告,包括那些在Oracle自己的网站上的警告。我也有一个WMPNS.JAR(从2002年开始!)并删除它使得那些可怕的混合代码警告消失了。这需要转化为用户应用于自己的机器的提示。我怀疑MS以某种方式将此文件隐藏到文件夹中,并且有些指向windwos更新,然后6.19 Java更新导致了问题。 Oracle可能应该修复JRE安装以查找该文件并将其删除,因为我怀疑很多XP用户都会受此影响。