【问题标题】:JaCoCo agent Configuration in Weblogic | ClassCastException in server startupWeblogic中的JaCoCo代理配置|服务器启动中的 ClassCastException
【发布时间】:2017-07-18 17:49:51
【问题描述】:

尝试在 Weblogic 11g 中配置 JaCoCo 代理,在给出下面提到的参数后

-XXaggressive -Xmx8192m -Xms8192m -Xgc:pausetime -Xgc:gencon -XXnosystemgc -Duser.home=/scratch/app/product/fmw/XXXinstall/XXX/config -Dsun.net.client.defaultConnectTimeout=10000 -javaagent:/scratch/app/product/fmw/user_projects/domains/host_domain/lib/jacocoagent.jar=destfile=/scratch/app/product/fmw/user_projects/domains/host_domain/tmp/host_jacoco.exec,output=tcpserver ,address=,includes=com.*

WEBLOGIC SERVER 无法正常启动以下日志

错误

引起:java.lang.ClassCastException:[Z 在 XXX.app.AbstractApplication.fetchAllOverriddenServices(AbstractApplication.java:1000) 在 XXX.app.AbstractApplication.checkAccess(AbstractApplication.java:930) 在 XXX.app.sms.service.provider.AccessibleResourceApplicationService.initializeRequestedResource(AccessibleResourceApplicationService.java:1011) 在 XXX.app.sms.service.provider.AccessibleResourceLoader.initializeSingleton(AccessibleResourceLoader.java:187) 在 XXX.app.sms.service.provider.AccessibleResourceLoader.loadResources(AccessibleResourceLoader.java:232) 在 XXX.app.adapter.impl.sms.AccessibleResourceLoaderAdapter.loadResources(AccessibleResourceLoaderAdapter.java:49) 在 XXX.app.bootstrap.BootstrapInitializer.initializeSecuritySingletons(BootstrapInitializer.java:292) 在 XXX.channel.branch.bootstrap.BootstrapServlet.init(BootstrapServlet.java:46)

注意:去掉参数后:

-javaagent:/scratch/app/product/fmw/user_projects/domains/host_domain/lib/jacocoagent.jar=destfile=/scratch/app/product/fmw/user_projects/domains/host_domain/tmp/host_jacoco.exec, output=tcpserver,address=,includes=com.*

服务器正常启动。

【问题讨论】:

    标签: weblogic jacoco


    【解决方案1】:

    正如https://github.com/jacoco/jacoco/issues/567 中的回答:

    没有应用程序的 WebLogic 服务器完美启动 JaCoCo。

    您的代码很可能有问题:

    为了收集执行数据,JaCoCo 将成员添加到类中。其中一个成员是类型为boolean[] 的字段([Z 字节码表示法)。这些成员是marked as synthetic。您的应用程序及其库必须忽略合成成员。如果它们未被忽略,则更改您的应用程序以执行此操作,或使用代理参数 includesexcludes 从检测中排除类。

    在调试器下运行您的应用程序,在XXX.app.AbstractApplication.fetchAllOverriddenServices(AbstractApplication.java:1000) 行放置一个断点并调查为什么有错误的强制转换或/以及要排除哪些类。或者开始一一排除你的应用程序包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多