GAE ClassFormatError:不兼容的魔术值4022320623 EFBFBDEF - java

我在简化的Eclipse项目中有一个简单的webapp。
我的pom.xml包含一些将Google的appengine-maven-plugin添加到构建插件的行。

当我运行mvn appengine:devserver时,我最终收到一条错误消息,告诉我无法加载我的课程:

[INFO]警告:启动处理程序时出错
[INFO] java.lang.ClassFormatError:类文件com / teamlazerbeez / http / di / StartupListener中的魔术值4022320623不兼容

该数字以十六进制表示为EFBFBDEF,显然不是CAFEBABE,Java类文件的字节序列应以此开头。
我只在主题上找到this和this,这使我相信在编写或读取类文件期间编码出错。

这是问题吗?我如何强制Maven使用例如读取/写入类UTF-8编码?
什么是好的编码?
我的java文件都以相同的方式编码:Eclipse表示ISO-8859-1,Notepad ++表示ANSI。

PS:我在Windows机器上。

参考方案

正如Joakim Erdfeld的answer所暗示的,其中一个插件摆弄了构建。
罪魁祸首是maven-war-plugin v2.3,但仅在以下情况下:

在满足以下条件的情况下,在简化的Ecipse项目(在pom.xml中列出了appengine-maven-plugin v1.7.5的地方)上启用GAE性质将中断运行mvn appengine:devserver

“默认输出文件夹”(在Eclipse项目的“构建路径”设置中)设置为src/main/webapp/WEB-INF/classes/(需要GAE Eclipse插件才能正常工作)
GAE插件决定将GAE罐子放在src/main/webapp/WEB-INF/lib/中,即使这些罐子已经在类路径中了。

总之,maven-war-plugin将.class和.jar文件从您的WEB-INF/中不正确地复制到了生成的.war文件中。在此过程中的某个地方,它会误编码这些文件。

ClassFormatError:类中的非法类修饰符…0x209 - java

在都使用MyEclipse 9从JDK5 / Tomcat5迁移到JDK6 / Tomcat7之后,我的类遇到了一些奇怪的问题。每当我尝试通过jsp:usebean访问'myclass'时,都会出现以下错误org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.…

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…