类文件中不兼容的魔术值21877456

时间:2012-05-08 15:14:08

标签: java windows iis applet

我试图在我的网页上使用java applet。我尝试/搜索很多东西,但没有机会。所以情况就是这样。

我的applet代码在app.html中很简单:

    <applet codebase="." archive="applet.jar" code="de.escape.quincunx.dxf.apViewer" width="640" height="480" name="TEST">
    <param name="file"               value="40.dxf">
    <param name="framed"             value="false">
    <param name="frameWidth"         value="800">
    <param name="frameHeight"        value="600">
    </applet>

当我在浏览器中直接打开时,此html文件正常工作。它的工作当我用apache服务但它不工作,并在我尝试与IIS服务时给出错误“类文件中的不兼容的魔法值21877456”。在apache中我尝试php和html,两者都有效。

当我尝试提供applet时,IIS上是否有任何特殊配置需要?

感谢您的回答。

3 个答案:

答案 0 :(得分:1)

我认为IIS没有为.class提供正确的文件,可能它返回404错误或类似的东西,因为它无法找到该文件。

该错误意味着Java期待一个.class文件,所有类文件都以0xCAFEBABE开头,这是一个神奇的数字,Java可以检查它接收的文件实际上是一个类文件。但是,在您的情况下,IIS返回的文件不是类文件,它不以0xCAFEBABE开头,Java无法解析它。

最常见的原因是Web服务器无法提供文件,通常是因为404错误。

你应该检查一下发生了什么,在IIS日志中搜索.class文件的请求,或者使用工具(甚至是firebug)来查看返回给浏览器的内容。

答案 1 :(得分:0)

最后我找到了解决方案。实际上它不是确切的解决方案,但谢谢你的答案Simone Gianni。他的回答让我深入搜索IIS访问日志,并将它们与APACHE访问日志进行比较。是的,两者都是相同的,看起来在JAR文件中没有几个类。所以apVPORT.class不在jar文件中,编写这个applet的开发人员会在applet的另一部分中调用这些类,即使他没有使用它们。

如果有人能够回答为什么apache不向java发送任何信息或“其okey”信息并继续加载其余applet的原因,即使它看到404 for apVPORT.class但IIS发送404到java,这将是这个问题的最终答案。

答案 2 :(得分:0)

类文件中不兼容的魔术值21877456:我发现当页面无法访问/读取jar文件时会出现此错误。

在aspx页面中 -

   <applet code="FileAccess.class"
   archive="../applet/SignFileAccessApplet.jar" width="325" height="325">  
   </applet>
归档中的

使用Visual Studio的intellisense提供的“pickurl”选项检查url是否正确。 需要在代码属性中给出jar文件中的类文件路径。