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相关.
原来的问题现在似乎已经解决了。我可以从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
值得注意的变化。
.class
名已被删除。一件小事,添加它是可以容忍的,但不正确。Applet
从类名中删除。