我正在尝试编写applet并将其放入我的网站。我记得很久以前在使用Borland的时候做了这个,当1.4是最新版本时。它当然使用了applet标签(我目前正在使用它),它没有任何问题。但无论如何,我把类文件放在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
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
我尝试使用相同的applet代码制作一个快速的本地html文件来加载applet并且它有效。我已经在网上浏览了一下并听到了与此错误有关的各种事情,但似乎没有任何东西可以减轻它,我发现了。有什么想法吗?
本
答案 0 :(得分:5)
幻数是类文件开头的四字节值(0xCAFEBABE),它将其标记为类文件而不是任何其他类型的数据。
那么什么类型的文件有幻数1008813135?在十六进制中,变为字节0x3C,0x21,0x44,0x4F。常见的拉丁文编码中的字符数据解释为“<!DO
。可能继续作为”<!DOCTYPE
“。我们这里有一个HTML文件。这可能是一个损坏的服务器只返回一个错误页面HTTP响应中的非错误成功代码。
了解实际服务的内容。 Web浏览器可能会显示该页面。值得学习使用telnet(或nc)并手动输入HTTP响应。还有各种用于检查HTTP流量的实用程序。
答案 1 :(得分:3)
问题似乎出现在您的网站上,而不是您的代码中。谷歌搜索,似乎最常报告的错误是OpenCMS等系统(尤其是端口8080上的URL)。
所以,我想象的是,浏览器加载applet的调用实际上是失败的,但是返回数据而不是404/500错误。 Java VM正在尝试将返回的错误页面解释为它是一个类文件,并且非常正确地抱怨它毕竟不是一个有效的类文件。 (这种情况经常发生在内容管理系统重定向到主页而不是向用户返回实际的HTTP错误。)
要进行测试,请尝试在浏览器中手动键入applet的URL(不是托管的页面,applet本身),然后查看服务器返回的内容。