6

大家好,我今天正在为 Java 制作我的第一个小程序。我一直在服务器上使用子域,但我不知道该怎么做,因为我遇到了这个非常奇怪的错误。

我在服务器中有我的 jar 和所有东西,但每次我尝试加载 Applet 时都会发生这种情况。

java.lang.ClassFormatError:类文件 Evolution/EvolutionApplet 中不兼容的魔法值 218774561

经过研究,似乎不兼容的魔法值意味着 .jar 中的某些内容已损坏

这是网站http://dementedgames.site88.net/Main.html 如果您需要网站上的 html 代码,jar 名称是 Evolution。

编辑:小程序应该从 Evolution.EvolutionApplet 而不是 Evolution.Evolution 启动

4

3 回答 3

14

一个有效的 Java 类的魔法值0xCAFEBABE,它是 的十六进制值3405691582。这由文件的前 4 个字节表示。但是您得到218774561的又是 ASCII 字符CR, LF,<!(CRLF 是换行符)。要自己查看,请运行以下代码:

int magic = 218774561;
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(magic);
System.out.println(new String(b.array()));

这与网站提供的小程序相结合表明它是 a 的开始,<!DOCTYPE>而后者又表明它是一个 HTML 文档。

因此,请求Evolution.jar显然实际上返回了一个 HTML 文档。当您将浏览器地址栏中的当前请求 URI 更改为指向小程序的 URL(例如/page.html,将 URL 末尾更改为/Evolution.jar)时,您应该能够自己看到它。然后,您将看到浏览器在尝试下载小程序时实际检索到的内容。也许这是一个简单的 HTTP 404 错误文档。

要修复它,只需确保archive属性中的 URL 正确。它与您在浏览器地址栏中看到的当前请求 URL 相关。

于 2012-04-26T04:22:50.690 回答
1

原来的问题现在似乎已经解决了。我可以从http://dementedgames.site88.net/Evolution.jar下载 Jar

更新

看来这个Evolution.Evolution类不是小程序!使用以下命令从命令行运行它:

java -jar Evolution.jar

产生一个框架(具有非常“复古”的外观)!因此,忘记这个小程序的废话,并使用Java Web Start从链接启动框架。

旧答案

OTOH 它现在抛出一个ClassNotFoundException(在检查了 Jar 之后)让我认为它应该是:

<html>
<head>
<title>Evolution</title>
</head>
<body bgcolor="#000000" text="#906060">
<center>
<applet code="Evolution.Evolution" archive="Evolution.jar" width="800" height="600">
</applet>
</center>
</body>
</html>

该属性有两个code值得注意的变化。

  1. .class扩展名已被删除。一件小事,添加它是可以容忍的,但不正确。
  2. Applet从类名中删除。
于 2012-04-26T05:55:06.260 回答
0

上面的 BalusC 已经很好地解释了它。除此之外,您还可以查看此链接 Thread: Incompatible magic value 218774561 error in applet

似乎你的小程序标签的代码库和/或代码属性需要正确指出。

于 2012-04-26T04:32:04.950 回答