有些用户报告我们的Java小程序出现ClassNotFoundException
错误,但其他用户可以毫无问题地使用小程序。
我们发现问题似乎与系统的操作系统有关。
可以成功使用applet的用户拥有较新的计算机而不能使用Windows XP Home SP3的用户。我们通过在浏览器中输入applet URL验证了直接下载applet的能力。防火墙似乎不是问题所在。
我们要求大家使用Chrome将浏览器删除为变量。
我们是否需要以不同的方式对applet进行签名,或者在HTML中以不同的方式引用applet?
我们知道不推荐使用applet
代码,但这并不能解释为什么它会为某些用户而非其他用户生成此错误。
另一个相关细节:如果您直接使用IP地址,而不是域名,则小程序可以正常加载。
重现:
1)访问http://www.cengraving.com/s/item?itemId=CH003
2)点按自定义。
3)在XP计算机上,该页面会生成ClassNotFoundException
错误,指出未找到com.designapplet.ui.DesignApplet
。 (我们也引用了com.designapplet.ui.DesignApplet.class
,但也失败了。)
4)如果再次尝试使用IP地址,则applet会在相同的XP计算机上正常加载:67.212.167.170/s/item?itemId=CH003。我们可以使用www.cengraving.com/SecureApplet.jar直接从浏览器加载applet,因此防火墙规则似乎不是问题。
HTML:
<applet name="app" archive="/SecureApplet.jar" code="com.designapplet.ui.DesignApplet" width="770" height="800">
<param name="itemId" value="CH003">
<param name="layoutId" value="CH0031395363931437.lay">
<param name="process" value="Engraving">
<param name="qty" value="1">
<param name="id" value="171">
<param name="sessionId" value="3BF3610C74B4BB5CC5193E479CD1D930">
(HTML)
</applet>
答案 0 :(得分:2)
不同版本的Windows上的Java版本之间是否存在不一致?我看起来这些其他地方似乎也有类似的问题,结果是使用了错误版本的Java。错误消息本身似乎是指缺少的组件。
答案 1 :(得分:0)
在我看来,applet
标记存在问题(缺少属性或有点错误的值)。更改在网站上发布applet的方式,我会给你一些example here。
您必须注意某些属性的值,例如codebase
或java_codebase
- 他们必须包含jar的完整网址(不带扩展名) - 我有很多发布applet(不同的浏览器和系统)和我的回答(上面的链接)的问题是我辛勤工作的本质。