tomcat启动后,报
End CacheManager init
Exception in thread "CACHEDDAOFACTORY_INIT2" java.lang.ClassFormatError: Illegal class name "[L[Ljava/lang/String;;" in class file com/huawei/iread/portal/engine/PortalEngine
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at com.huawei.iread.cache.inittask.MarketingAdaptingRuleInitTask.run(MarketingAdaptingRuleInitTask.java:55)
at com.huawei.uniportal.utilities.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
at java.lang.Thread.run(Thread.java:662)
很纠结,什么都没改啊,就弄了几个类。
未果,上网查询后,需要配置一个参数。
好吧,配就配吧。
找到catalina.sh
加上-Xverify:none这个参数
JAVA_OPTS="$JAVA_OPTS -server -Xmn1024M -Xms2048M -Xmx2048M -Xverify:none -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=90 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:gc.log -XX:+PrintGCDetails -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=39091 -Dcom.sun.management.jmxremote.ssl=false"
OK 解决。
但是不想就这么解决啊。
最后猜测为该文件PortalEngine.java编译问题或者编译版本问题。因为当时使用tomcat发布之后,在webapps下class目录下取的。
故用本工程的build.xml进行编译。
将两个class文件进行对比,在编译上的确有某些差异。当然无法确定这就是最终问题的所在。
最后用jdk6.0 换build.xml进行编译,实际上这里也就是javac的命令了。打包完成之后,搞定。
虽然搞定了,但是无法知道到底什么原因,牵强的解释为编译问题吧。