【问题标题】:ClassNotFoundException when loading applet on some computers在某些计算机上加载小程序时出现 ClassNotFoundException
【发布时间】:2023-03-26 19:01:01
【问题描述】:

在某些机器上运行此小程序将无法正常工作,但在其他机器上运行正常。在所有情况下,看起来都已安装 JRE 1.6.0_26。

<script type="text/javascript" src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes = {codebase:'http://kash-dev/applet/',
        code:'Auth.class',
    archive:'Auth.jar',
    id: 'auth',
    width:0, height:0} ;
    var version = '1.6' ;
deployJava.runApplet(attributes, null, version);
</script>

这是错误:

load: class Auth.class not found.
java.lang.ClassNotFoundException: Auth.class
        at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
        at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
        at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
        at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
        at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
        at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassNotFoundException: Auth.class

【问题讨论】:

  • 一些愚蠢的问题,所有机器都可以访问位于您的开发服务器上的 jar?尝试使用 JNLP 作为替代方案。
  • 尝试在 java 控制面板中出现问题的机器上关闭 jar 缓存。如果这样做之后它可以工作,那么你已经缓存了旧的 jar 版本。
  • 所有客户端机器都在同一个网络上,可以看到kash-dev。

标签: java applet classnotfoundexception


【解决方案1】:
  1. http://kash-dev/applet/ 不是真正的 URL,所以我很惊讶它可以在 任何 计算机上运行。
  2. width:0, height:0 任何自尊的垃圾邮件抑制软件(病毒检查器等)都会默默地自动删除 0 大小的 HTML 元素。给它一个 10x10 的大小并使用 CSS 隐藏它(可能使用 display 属性,但最好将它移动到“离开页面”的位置 - 例如将它放在相对于顶部的 -50,-50 -页面的左角)。

【讨论】:

  • @Kash22 小程序的宽度和高度你修好了吗?
  • 还没有,但我不明白这与我的问题有什么关系。如果如您所说,抑制软件是由于宽度/高度为 0 而从页面中“删除”元素,那么 Java 插件甚至不应该首先启动以生成类未找到异常
  • “我不明白这与我的问题有什么关系” 如果您不愿意尝试,我看不到这个问题得到解决。但是,嘿,祝你好运 - 我不在这里..
【解决方案2】:

我会仔细检查每台机器上的 Java 版本。我唯一一次看到这种错误 - ClassNotFound 在一台计算机上而不是另一台计算机上 - 是当小程序或 jar 由更高版本的 Java 编译而不是安装的版本时,例如尝试在装有 Java 6 的机器上运行 Java 7 编译的小程序/jar。

【讨论】:

  • 我使用 1.6.0_15 编译了小程序,但客户端运行 java 插件 1.6.0_26 和 JRE 1.6.0_26-b03
【解决方案3】:

事实证明,Java 控制面板中的网络代理设置被设置为“用户代理服务器”——尽管它的地址/端口设置与“浏览器设置”中的设置相同,但 JVM 无法解析JAR 文件 URL 正确。切换到“使用浏览器设置”解决了这个问题。感谢所有回复的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多