这个问题已经部分解决。我会写下来,因为现在谷歌并没有提供太多帮助。
我的Web应用在本地Ubuntu Linux Java环境中运行良好。当我将其部署到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运行在Open JDK 1.6.0_27上,而远程Tomcat运行在IBM JRE 1_6_0上。两个环境都使用Tomcat 6.36。