java.lang.ClassFormatError:不兼容的魔法值218774561

时间:2012-04-26 04:06:19

标签: java class jar applet classformaterror

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

我的服务器中有我的jar,除了每次尝试加载Applet时都会发生这种情况。

  

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

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

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

编辑:applet应该从Evolution.EvolutionApplet而不是Evolution.Evolution

启动

3 个答案:

答案 0 :(得分:14)

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

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

这与网站提供的applet结合使用表明它是<!DOCTYPE>的开头,而Evolution.jar反过来表明它是HTML文档。

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

要解决此问题,请确保{{1}}属性中的网址正确无误。它与您在浏览器地址栏中看到的当前请求URL相关。

答案 1 :(得分:1)

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

下载Jar

更新

似乎Evolution.Evolution类不是applet!使用以下命令从命令行运行它:

java -jar Evolution.jar

制作一个框架(具有非常“复古”的外观)!因此,请忘记此applet废话,使用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

答案 2 :(得分:0)

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

ur applet标记的代码库和/或代码属性似乎需要正确指出。