java.lang.VerifyError: Cannot inherit from final class

玄范 2015-07-03 05:30:59
由于需求需要,将在unix上部署的应用迁移到linux上,新安装了weblogic,建好domain,启动weblogic,一切OK,没有问题;
但是在部署应用的时候,报了以下错误:

Failure occurred in the execution of deployment request with ID "1435914753674" for task "weblogic.deploy.configChangeTask.0". Error is: "weblogic.application.ModuleException: java.lang.VerifyError: Cannot inherit from final class"
weblogic.application.ModuleException: java.lang.VerifyError: Cannot inherit from final class
at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:172)
at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:167)
at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:80)
at weblogic.work.ContextWrap.run(ContextWrap.java:40)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:550)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
Caused by: java.lang.VerifyError: Cannot inherit from final class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:385)
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:344)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:302)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:180)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
at com.oracle.injection.integration.BeanLoaderUtils.loadBeanClassesFromJar(BeanLoaderUtils.java:54)
at com.oracle.injection.integration.BeanLoaderUtils.loadBeanClassesFromEmbeddedJar(BeanLoaderUtils.java:34)
at com.oracle.injection.integration.CDIModuleExtension.loadBeanClassesFromEmbeddedJar(CDIModuleExtension.java:727)
at com.oracle.injection.integration.CDIModuleExtension.makeInjectionArchivesForResourceType(CDIModuleExtension.java:526)
at com.oracle.injection.integration.CDIModuleExtension.createLibInjectionArchives(CDIModuleExtension.java:486)
at com.oracle.injection.integration.CDIModuleExtension.createWebModuleInjectionArchive(CDIModuleExtension.java:193)
at com.oracle.injection.integration.CDIModuleExtension.createInjectionArchive(CDIModuleExtension.java:179)
at com.oracle.injection.integration.CDIModuleExtension.postPrepare(CDIModuleExtension.java:85)
at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:297)
at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:285)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:109)


以上错误信息实在看不出来有用的信息,鉴于现在比较急,看看哪位有遇到过类似的问题
...全文
1317 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
flytreeleft 2016-05-01
  • 打赏
  • 举报
回复
Guava 16.0以上版本已解决该问题,只需要在项目pom.xml中显示引入该版本即可,具体原因见: https://github.com/google/guava/issues/1527#issuecomment-61353249
玄范 2015-07-08
  • 打赏
  • 举报
回复
问题出在加载closure-compiler.jar包中的 com.google.common.base.CaseFormat$2 类; Closure compiler 绑定在google的guava库中(绑定版本15.0.0),但是weblogic也自带有guava库: weblogic12/oracle_common/modules/org.apache.maven_3.0.4/lib/sisu-guava-0.9.9.jar 自带的jar包比较老旧. 我们需要做的就是在 weblogic.xml中添加如下内容: <package-name>com.google.common.*</package-name> 但是还没有完,再次重启服务器,还是会遇到如下异常:
Caused By: java.lang.NullPointerException
        at com.google.javascript.rhino.head.SecureCaller.loadBytecodePrivileged(SecureCaller.java:141)
        at com.google.javascript.rhino.head.SecureCaller.access$100(SecureCaller.java:24)
        at com.google.javascript.rhino.head.SecureCaller$3.run(SecureCaller.java:131)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.google.javascript.rhino.head.SecureCaller.loadBytecode(SecureCaller.java:127)
        Truncated. see log file for complete stacktrace
Exception发生在下列行:
 private static byte[] loadBytecodePrivileged()
    {
        URL url = SecureCaller.class.getResource("SecureCallerImpl.clazz");
        try
        {
            InputStream in = url.openStream();
是由于url 为空 Full stacktrace:
weblogic.management.DeploymentException: java.lang.NullPointerException
	at weblogic.application.internal.BaseDeployment.throwAppException(BaseDeployment.java:123)
	at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:260)
	at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48)
	at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
	at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
	at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:222)
	at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:414)
	at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)
	at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
	at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
	at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
	at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
	at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
	at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:191)
	at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:99)
	at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
Caused By: java.lang.NullPointerException
	at com.google.javascript.rhino.head.SecureCaller.loadBytecodePrivileged(SecureCaller.java:141)
	at com.google.javascript.rhino.head.SecureCaller.access$100(SecureCaller.java:24)
	at com.google.javascript.rhino.head.SecureCaller$3.run(SecureCaller.java:131)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.google.javascript.rhino.head.SecureCaller.loadBytecode(SecureCaller.java:127)
	at com.google.javascript.rhino.head.SecureCaller.<clinit>(SecureCaller.java:26)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:249)
	at com.oracle.injection.provider.weld.BasicResourceLoader.classForName(BasicResourceLoader.java:27)
	at org.jboss.weld.bootstrap.BeanDeployer.loadClass(BeanDeployer.java:107)
	at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:77)
	at org.jboss.weld.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:135)
	at org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:184)
	at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:349)
	at com.oracle.injection.provider.weld.WeldInjectionContainer.deploy(WeldInjectionContainer.java:99)
	at com.oracle.injection.integration.CDIAppDeploymentExtension.initCdi(CDIAppDeploymentExtension.java:68)
	at com.oracle.injection.integration.CDIAppDeploymentExtension.activate(CDIAppDeploymentExtension.java:47)
	at weblogic.application.internal.flow.AppDeploymentExtensionFlow.activate(AppDeploymentExtensionFlow.java:37)
	at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:729)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
	at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258)
	at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48)
	at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
	at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
	at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:222)
	at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:414)
	at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)
	at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
	at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
	at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
	at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
	at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
	at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:191)
	at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:99)
	at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
原因是weblogic CDI试图扫描closure compiler jar包,尽管配置为 bean-discovery-mode="none" Weblogic12c 配备是 Weld 1.1.3 作为它的CDI实现 总结解决方案: 1. 删除要部署的应用中的 guava-15.0.jar中的 META-INF/beans.xml,来阻止服务器的CDI 2. 在weblogic.xml中添加上面提到的配置信息 3. 可能还会有guava-xx.jar的版本问题,本人使用的是guava-15.0.jar

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧