某些计算机上的applet的ClassNotFoundException但与其他计算机无关 - 与操作系统有关?

时间:2014-03-21 01:07:48

标签: java html html5 applet signed-applet

有些用户报告我们的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>

2 个答案:

答案 0 :(得分:2)

不同版本的Windows上的Java版本之间是否存在不一致?我看起来这些其他地方似乎也有类似的问题,结果是使用了错误版本的Java。错误消息本身似乎是指缺少的组件。

http://developer.appcelerator.com/question/15151/windows-xp-and-classnotfoundexception-with-titanium-dev-121

http://discussions.blackboard.com/forums/t/43951.aspx

答案 1 :(得分:0)

在我看来,applet标记存在问题(缺少属性或有点错误的值)。更改在网站上发布applet的方式,我会给你一些example here

您必须注意某些属性的值,例如codebasejava_codebase - 他们必须包含jar的完整网址(不带扩展名) - 我有很多发布applet(不同的浏览器和系统)和我的回答(上面的链接)的问题是我辛勤工作的本质。