JaCoCo代理在Weblogic中配置|服务器启动时出现ClassCastException

时间:2017-07-17 06:28:35

标签: weblogic jacoco

在给出下面提到的参数

之后,尝试在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 ,地址=,包括= com的。*

WEBLOGIC SERVER没有正确地提出以下注意事项

错误

引起:java.lang.ClassCastException:[Z         在XXX.app.AbstractApplication.fetchAllOverriddenServices(AbstractApplication.java:1000)         在XXX.app.AbstractApplication.checkAccess(AbstractApplication.java:930)         at 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,输出= tcpserver的,地址=,包括= com的。*

服务器正常运行。

1 个答案:

答案 0 :(得分:0)

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

  

没有应用程序的WebLogic服务器与JaCoCo完美匹配。

您的代码中很可能存在问题:

  

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

     

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