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

me *_* me 6 java applet jar class classformaterror

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

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

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

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

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

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

Bal*_*usC 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()));
Run Code Online (Sandbox Code Playgroud)

这与网站提供的小程序相结合表明它是一个开始,<!DOCTYPE>而这反过来表明它是一个HTML文档.

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

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


And*_*son 1

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

更新

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

java -jar Evolution.jar
Run Code Online (Sandbox Code Playgroud)

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

旧答案

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

  1. 扩展.class名已被删除。一件小事,添加它是可以容忍的,但不正确。
  2. Applet从类名中删除。