【问题标题】:Embedding an applet doesn't work on my website嵌入小程序在我的网站上不起作用
【发布时间】:2009-12-09 03:59:37
【问题描述】:

我正在尝试编写一个小程序并将其放入我的网站。我记得很久以前在 1.4 是最新版本时使用 Borland 这样做。它当然使用了小程序标签(我目前正在使用)并且没有问题。不过不管怎样,我把类文件放在httpdocs/自己的目录下,然后在网页中使用这段代码:

<applet code="wsavatar/WSAvatar" width="425" height="150> Your browser does not support the applet tag. </applet>

当我尝试加载页面时,会发生这种情况:

Java Plug-in 1.6.0_17 Using JRE version 1.6.0_17-b04 Java HotSpot(TM) Client VM

java.lang.ClassFormatError: Incompatible magic value 1008813135 in class file   
  wsavatar/WSAvatar
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(Unknown Source)
  at java.security.SecureClassLoader.defineClass(Unknown Source)
  at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.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.ClassFormatError: Incompatible magic value 1008813135
in class file wsavatar/WSAvatar

我尝试制作一个快速的本地 html 文件来使用相同的小程序代码加载小程序并且它工作正常。我在网上环顾四周,听说过与此错误有关的各种事情,但我发现似乎没有任何东西可以缓解它。有什么想法吗?

【问题讨论】:

  • 做一些谷歌搜索 - 有几十个关于同一问题的报告

标签: java applet magic-numbers


【解决方案1】:

幻数是类文件开头的一个四字节值 (0xCAFEBABE),将其标记为类文件而不是任何其他类型的数据。

那么什么类型的文件有幻数 1008813135?在十六进制中,字节 0x3C、0x21、0x44、0x4F。解释为常见拉丁编码中的字符数据是“&lt;!DO。可能继续为“&lt;!DOCTYPE”。我们这里有一个 HTML 文件。这可能是由损坏的服务器返回的错误页面,只有非错误成功HTTP 响应中的代码。

查看实际提供的服务。 Web 浏览器可能会显示该页面。值得学习使用 telnet(或 nc)并手动输入 HTTP 响应。还有各种用于检查 HTTP 流量的实用程序。

【讨论】:

  • 谢谢,正如我在回应另一个答案时提到的那样,它似乎是一个 404 页面,它正在返回,因此是 .. > 标签。
【解决方案2】:

问题似乎出在您的网站上,而不是您的代码上。谷歌搜索,这个错误似乎是 OpenCMS 等系统最常报告的错误(特别是对于端口 8080 上的 URL)。

所以,我想正在发生的是浏览器调用加载小程序实际上失败了,但返回的是数据而不是 404/500 错误。 Java VM 试图解释返回的错误页面,就好像它是一个类文件一样,并且非常正确地抱怨它毕竟不是一个有效的类文件。 (这种情况经常发生在重定向到主页而不是向用户返回实际 HTTP 错误的内容管理系统中。)

要进行测试,请尝试在浏览器中手动键入小程序的 URL(不是托管它的页面,小程序本身),然后查看服务器返回的内容。

【讨论】:

  • 啊,是的,加载小程序失败。我们没有使用预先编写的 CMS,尽管它使用的是 Savant3,并且头像的直接 URL 返回 404。
  • 呃,对不起,我的意思是小程序的直接 URL。
  • 我能够为小程序本身添加一个条目,就好像它是一个单独的页面一样,它解决了这个错误(尽管现在我还有更多要调试的!)。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-09-21
  • 2011-06-04
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多