java.lang.ClassFormatError JVMCFRE076错误幻数

java.lang.ClassFormatError JVMCFRE076错误幻数,java,Java,这个问题部分解决了。我将写这篇文章,因为今天谷歌没有提供那么多的帮助 我有一个在本地Ubuntu Linux Java环境中运行良好的Web应用程序。当我在suse linux环境中部署它时,会出现以下异常: java.lang.RuntimeException: java.lang.ClassFormatError: JVMCFRE076 bad magic number; class=com/package/util/MongodbUtil, offset=0 Error: java.lan

这个问题部分解决了。我将写这篇文章,因为今天谷歌没有提供那么多的帮助

我有一个在本地Ubuntu Linux Java环境中运行良好的Web应用程序。当我在suse linux环境中部署它时,会出现以下异常:

java.lang.RuntimeException: java.lang.ClassFormatError: JVMCFRE076 bad magic number;
class=com/package/util/MongodbUtil, offset=0 Error: java.lang.ClassFormatError: JVMCFRE076 bad magic number;
class=com/package/util/MongodbUtil, offset=0 /items added=0 /items deleted=0 /items unchanged=0
问题源于类名。只有在名称中包含“Util”时才会引发异常。我将这个类重命名为DbTool,一切都很好。再深入一点,我发现我不能在类名中包含部分包名

我有一个可行的解决方法,但我仍然有兴趣知道为什么会抛出异常,以及为什么它在本地环境中有效,而在远程环境中无效


我的本地tomcat运行在OpenJDK1.6.0_27上,远程tomcat运行在IBMJRE1_6_0上。这两种环境都使用tomcat 6.36,导致此问题的原因是您在编译和运行时使用了不同的java虚拟机(
Sun HotSpot VM和IBM J9 VM
),通过统一编译和运行时环境,这个问题不会出现。

我非常怀疑,如果您的包的名称中包含
util
,那么您的类名也不能包含
util
(大写或小写)-问题肯定出在其他地方。要反驳您所说的,请查看Spring框架中的
StringUtils
——它位于“org.springframework.util”包下,并且工作得非常好!你发布这个答案已经有一段时间了,但我还是要发表评论。在使用Java近10年后,我第一次偶然发现了这个奇怪的错误。在我的例子中,它是由损坏的类文件引起的-如果你想要更多的细节,我可以作为一个单独的答案发布。谢谢你的评论。当我从ibmjre改为oraclejre时,这个问题就解决了。我还是不知道为什么。你可以随时发布你的回答,这可能会对将来的人有所帮助。我想测试一下,但是安装IBMJDK有点复杂。