嘿大家今天我正在制作我的第一个Java小程序。我一直在服务器上使用子域,我不知道该怎么做,因为我得到了这个非常奇怪的错误。
我的服务器中有我的jar,除了每次尝试加载Applet时都会发生这种情况。
java.lang.ClassFormatError:类文件Evolution / EvolutionApplet中不兼容的魔术值218774561
经过研究,似乎不相容的魔法值意味着.jar中的某些内容已被破坏
这是网站http://dementedgames.site88.net/Main.html 如果您需要网站上的html代码,则jar名称为Evolution。
编辑:applet应该从Evolution.EvolutionApplet而不是Evolution.Evolution
启动答案 0 :(得分:14)
有效Java类的magic value是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()));
这与网站提供的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
属性有两处值得注意的变化。
.class
扩展名已删除。一个小问题,加上它是可以容忍的,但不正确。Applet
。答案 2 :(得分:0)
ur applet标记的代码库和/或代码属性似乎需要正确指出。