当前位置:编程学习 > 网站相关 >>

Exception in thread "Thread-4004" java.lang.VerifyError: class loading constrain

系统:windows 2003
环境:WebSphere 6.1
错误: 同时部署多个项目时。第一个能正常访问。其他的访问的时候的日志如下:

[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R Exception in thread "Thread-4004" java.lang.VerifyError: class loading constraint violated (class: oracle/jdbc/internal/OracleStatement$$EnhancerByCGLIB$$95478f94 method: CGLIB$setROWIDAtName$159(Ljava/lang/String;Loracle/sql/ROWID;)V) at pc: 0
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at java.lang.J9VMInternals.verifyImpl(Native Method)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at java.lang.J9VMInternals.verify(J9VMInternals.java:59)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at java.lang.J9VMInternals.initialize(J9VMInternals.java:120)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at java.lang.reflect.Method.invoke(Method.java:615)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.cglib.proxy.Enhancer.setCallbacksHelper(Enhancer.java:616)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.cglib.proxy.Enhancer.setThreadCallbacks(Enhancer.java:609)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.cglib.proxy.Enhancer.createUsingReflection(Enhancer.java:631)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.cglib.proxy.Enhancer.firstInstance(Enhancer.java:538)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:231)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.cglib.proxy.Enhancer.create(Enhancer.java:285)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.proxool.ProxyFactory.getProxy(ProxyFactory.java:78)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.proxool.ProxyFactory.getStatement(ProxyFactory.java:60)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:196)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at oracle.jdbc.internal.OracleConnection$$EnhancerByCGLIB$$a6816abf.prepareStatement(<generated>)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at pde.ams.database.jdbc.JdbcOracleDao.executeQuery(JdbcOracleDao.java:80)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at pde.ams.search.IndexRunner.startIndex(IndexRunner.java:176)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at pde.ams.search.IndexRunner.work(IndexRunner.java:119)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at pde.ams.search.IndexRunner.run(IndexRunner.java:106)
[11-3-30 11:07:11:827 CST] 000015b4 SystemErr     R  at java.lang.Thread.run(Thread.java:797)
--------------------编程问答-------------------- 打开 oracle 驱动的 jar 里面的 MANIFEST.MF 清单文件看,这个 jar 包是不是已经经过数字签名,并且 Sealed: true

如果 Sealed:true 那么这个 jar 里面的 java package 列表中的所有类,如果在这个 jar 文件之外也有其它类在这些 java package 中的话就会出错,再加上数字签名就能防止其它人弄一个类往你的 java package 名字空间里面混淆替换,篡改原来的 jar 文件。

你这个 CGLIB 增强在它看来属于篡改行为。 --------------------编程问答-------------------- Manifest-Version: 1.0
Specification-Title:    Oracle JDBC driver classes for use with JDK14
Sealed: true
Created-By: 1.4.2_08 (Sun Microsystems Inc.)
Implementation-Title:   ojdbc14.jar
Specification-Vendor:   Oracle Corporation
Specification-Version:  Oracle JDBC Driver version - "10.2.0.1.0"
Implementation-Version: Oracle JDBC Driver version - "10.2.0.1.0"
Implementation-Vendor:  Oracle Corporation
Implementation-Time:    Wed Jun 22 11:19:45 2005

Name: oracle/sql/converter/
Sealed: false

Name: oracle/sql/
Sealed: false

Name: oracle/sql/converter_xcharset/
Sealed: false --------------------编程问答-------------------- 上面这个是MANIFEST.MF清单。

Sealed: true

下面我应该怎么做呢 --------------------编程问答-------------------- 把这个 jar 解压后重新打包成不带签名和 sealed 试试看,反正你是自己用的,又不是像 Oracle 那样发布产品出去。
补充:企业软件 ,  WebSphere
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,