1

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

我的小程序代码在 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,两者都在工作。

当我尝试为小程序提供服务时,IIS 上是否需要任何特殊配置?

谢谢您的回答。

4

3 回答 3

1

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

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

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

您应该检查幕后发生的事情,在 IIS 日志中搜索 .class 文件的请求,或者使用工具(甚至可能是 firebug)查看返回给浏览器的内容。

于 2012-05-08T15:45:07.170 回答
0

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

如果有人可以回答 apache 不向 java 发送任何信息或“它的 okey”信息的原因并继续加载小程序的其余部分,即使它看到 apVPORT.class 的 404 但 IIS 向 java 发送 404,这将是最终的回答这个问题。

于 2012-05-11T09:17:34.690 回答
0

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

在 aspx 页面中 -

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

在存档中,使用 Visual Studio 的智能感知提供的“pickurl”选项检查 url 是否正确。jar 文件中的类文件路径需要在 code 属性中给出。

于 2013-09-05T07:26:24.833 回答