我正在编写一个Java小程序并将其嵌入到网页中。 它曾经在不同的浏览器中运行 Mac 和 Windows 没有问题。 我在 Mac 上使用 NetBeans 构建小程序使用的 .jar 文件。
出于某种原因,我决定在 Windows 的 NetBeans 上加载该项目 - 从任何浏览器访问网页时,我开始在 Windows 计算机上收到以下错误:
java.lang.ClassFormatError: Incompatible magic value 1008813135 in class file
担心一定是我决定在 Windows 上打开项目导致了此错误 - 我尝试从 Mac 的 NetBeans 进行构建 - 但错误仍然存在。
我在Mac上启动了一段时间的新项目并导入了现有的源代码:仍然是同样的问题。
我正在阅读一些有关此错误的文章,似乎预期的幻数是十六进制的 0xCAFEBABE,十进制的 3405691582,而不是 1008813135。所以看起来 Mac 版本的 Java 不再生成此文件头?锄头可以吗?我没有做任何更新或任何事情。
是的,
0xCAFEBABE
通常是Java文件的前4个字节。
1008813135 是拉丁编码中的
<!DO
,很可能是 <!DOCTYPE...
的开始。
因此,这很可能是
404 error
或其他错误页面的开始。
我没有遇到过这个问题,但是谷歌搜索这个错误会产生几种可能的解决方案:
forum.sun.com - Java Applet 开发 - 类文件 MyApplet 中不兼容的 magic 值 1008813135
感谢上帝,问题解决了。
它是 Java 缓存,因此解决方案是转到 Java 控制面板的“常规”选项卡,然后在“Internet 临时文件”下单击“设置”,然后单击“删除文件”。再次尝试使用小程序。
问题现在已经解决了:我发现我使用的网站主机根本不支持.jar文件。我使用 ftp 程序批量上传这些文件,但没有注意到它完全忽略了 .jar 文件。
好吧,所以这是一个 apache 配置问题,从我的 httpd.conf 文件中删除了这一行:
# DefaultType application/x-httpd-php
解决了问题。
如果您使用 Spring security 或某种自定义 Servlet Filters,请确保存档或代码库位置位于“permitAll”访问权限中。这对我来说是个问题
我面临着同样的问题。我的情况的原因是Applet 使用的所有依赖库都未签名,并且 applet 无法找到它们。
所以我在jsp文件中添加了所有依赖库以及主小程序,如下所示:
app.archive = '/esense/resources/lib/Applet.jar, /esense/resources/lib/jasypt-1.7.jar, /esense/resources/lib/mysql-connector-java-5.1.30.jar, /esense/resources/lib/runtime-api-1.0.jar';
我也签署了所有罐子。
希望这适用于您的情况。
不兼容的幻数是 html 文件的前四个字节,其中包含一些错误消息,可能是找不到文件的消息。
当我在小程序标签的代码库元素中没有考虑区分大小写时,我遇到了这种现象。在 Windows 上一切正常,但我使用的互联网服务器运行的是 UNIX,其中文件名区分大小写很重要。在代码和代码库元素中区分所有文件和目录名称的大小写解决了问题。
我只是单击了 maven->更新项目->在我的 Spring Boot 中包含快照版本,它就起作用了。
我在使用 URLClassLoader 从 URL 加载类时收到此错误。 我给它的 URL 是 HTTP,在服务器上我有一个 HTTP 到 HTTPS 的重定向,在类加载时我会收到此错误。
我的修复方法是,我首先连接到 URL 并检查我是否被重定向到 HTTPS,如果是,我只需将我调用的 URL 更改为 HTTPS。