applet无法从jar加载类

时间:2009-03-30 20:33:39

标签: java java-ee applet

有些用户抱怨applet不再有效,当他们查看java控制台时,他们会遇到java.lang.noClassDefFoundError并检查我的访问日志,我看到他们已经下载了包含该类的jar文件,然后发出特定类的get请求。

不同的用户在不同的类上休息。

有些用户很好。

任何可能导致此问题的想法/解决此问题。

我已经检查过以确保文件在他们的java缓存中,清除了缓存等。似乎没有什么可以修复它们。

如果他们遇到qa网站,它也会破坏。

4 个答案:

答案 0 :(得分:2)

jar正在传输中被破坏,我们正在寻找从服务器的oracle / bea获取补丁。

如果连接速度太慢(调制解调器速度),weblogic会通过发送len = 0的数据包来表示传输结束。

网络将发信号通知java表示下载已成功完成,然后java因java.lang.noClassDefFoundError而失败。

答案 1 :(得分:1)

如果可以加载类本身但是该类的某些依赖性不可能,则会发生这种情况。是否存在依赖的外部JAR?

答案 2 :(得分:0)

您确定jar文件包含所有必需的类吗?在您喜欢的Zip应用程序中打开它并仔细检查。也许这个罐子的最新版本搞砸了,并没有包含所有内容。

答案 3 :(得分:0)

我假设你的措辞已经做了一些更新。一些用户很可能已经缓存了之前的Jar文件。

在实时配置中部署新的applet版本时,我执行以下操作:

  1. 确保不缓存包含applet的页面 - 使用HTTP no-caching techniques。您可能希望从包含这些标头的新页面重新部署,以确保不是这种情况。
  2. 为每次更新从不同的URL部署jar文件(我在目录中编码版本号,但您可以同样重命名jar文件)。
  3. 如果applet执行任何客户端服务器交互,请确保检查版本号并向用户报告不正确的版本。
  4. 即使您按照此操作,用户可能仍有问题,请他们一次尝试这些问题(按照他们应该尝试的顺序列出):

    1. 按浏览器窗口上的刷新。
    2. 重新启动所有浏览器窗口
    3. 卸载所有在“添加/删除程序”中找到的Java VM并重新安装最新的Java(是的,他们必须自行承担风险!)