quarkus 中的 Jacoco 问题:Quarkus 从 2.16.12 升级到 3.8.3 后的开发

问题描述 投票:0回答:1

我刚刚将 quarkus 从 2.16.12 迁移到 3.8.3 (java 17),

quarkus:dev
的输出现在显示大量
java.lang.ClassNotFoundException: org.jacoco.agent.rt.internal_aeaf9ab.Offline

quarkus:dev
输出结束:

2024-04-04 17:16:15,325 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor#build threw an exception: java.lang.RuntimeException: Unable to handle class: com.deltaone.blackbox.web.PortalApplication
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.getAllowedClasses(ResteasyServerCommonProcessor.java:1089)
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.build(ResteasyServerCommonProcessor.java:239)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:840)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.getAllowedClasses(ResteasyServerCommonProcessor.java:1074)
    ... 12 more
Caused by: java.lang.NoClassDefFoundError: org/jacoco/agent/rt/internal_aeaf9ab/Offline
    at com.deltaone.blackbox.web.PortalApplication.$jacocoInit(PortalApplication.java)
    at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:90)
    at java.base/java.lang.invoke.ConstantBootstraps.makeConstant(ConstantBootstraps.java:72)
    at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstantImpl(MethodHandleNatives.java:337)
    at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstant(MethodHandleNatives.java:329)
    at com.deltaone.blackbox.web.PortalApplication.<init>(PortalApplication.java)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: org.jacoco.agent.rt.internal_aeaf9ab.Offline
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
    ... 24 more

    at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:334)
    at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:251)
    at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60)
    at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:112)
    at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:433)
    at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:55)
    at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:138)
    at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:93)
    at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:131)
    at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:62)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor#build threw an exception: java.lang.RuntimeException: Unable to handle class: com.deltaone.blackbox.web.PortalApplication
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.getAllowedClasses(ResteasyServerCommonProcessor.java:1089)
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.build(ResteasyServerCommonProcessor.java:239)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:840)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.getAllowedClasses(ResteasyServerCommonProcessor.java:1074)
    ... 12 more
Caused by: java.lang.NoClassDefFoundError: org/jacoco/agent/rt/internal_aeaf9ab/Offline
    at com.deltaone.blackbox.web.PortalApplication.$jacocoInit(PortalApplication.java)
    at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:90)
    at java.base/java.lang.invoke.ConstantBootstraps.makeConstant(ConstantBootstraps.java:72)
    at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstantImpl(MethodHandleNatives.java:337)
    at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstant(MethodHandleNatives.java:329)
    at com.deltaone.blackbox.web.PortalApplication.<init>(PortalApplication.java)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: org.jacoco.agent.rt.internal_aeaf9ab.Offline
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
    ... 24 more

    at io.quarkus.builder.Execution.run(Execution.java:123)
    at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
    at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
    at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:330)
    ... 9 more
Caused by: java.lang.RuntimeException: Unable to handle class: com.deltaone.blackbox.web.PortalApplication
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.getAllowedClasses(ResteasyServerCommonProcessor.java:1089)
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.build(ResteasyServerCommonProcessor.java:239)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:840)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor.getAllowedClasses(ResteasyServerCommonProcessor.java:1074)
    ... 12 more
Caused by: java.lang.NoClassDefFoundError: org/jacoco/agent/rt/internal_aeaf9ab/Offline
    at com.deltaone.blackbox.web.PortalApplication.$jacocoInit(PortalApplication.java)
    at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:90)
    at java.base/java.lang.invoke.ConstantBootstraps.makeConstant(ConstantBootstraps.java:72)
    at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstantImpl(MethodHandleNatives.java:337)
    at java.base/java.lang.invoke.MethodHandleNatives.linkDynamicConstant(MethodHandleNatives.java:329)
    at com.deltaone.blackbox.web.PortalApplication.<init>(PortalApplication.java)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: org.jacoco.agent.rt.internal_aeaf9ab.Offline
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:518)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
    ... 24 more

我的pom.xml:

...
<dependency>
  <groupId>org.jacoco</groupId>
  <artifactId>org.jacoco.agent</artifactId>
  <classifier>runtime</classifier>
  <scope>test</scope>
  <version>0.8.12</version>
</dependency>
...
     <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire-plugin.version}</version>
          <configuration>
              <excludedGroups>integration</excludedGroups>
              <systemPropertyVariables>
                  <jacoco-agent.destfile>${project.build.directory}/jacoco-ut.exec</jacoco-agent.destfile>
                  <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
                  <maven.home>${maven.home}</maven.home>
                  <maven.repo.local>${session.request.localRepositoryPath.path}</maven.repo.local>
              </systemPropertyVariables>
          </configuration>
          <executions>
              <execution>
                  <id>integration-tests</id>
                  <phase>integration-test</phase>
                  <goals>
                      <goal>test</goal>
                  </goals>
                  <configuration>
                      <excludedGroups>!integration</excludedGroups>
                      <groups>integration</groups>
                      <systemPropertyVariables>
                          <jacoco-agent.destfile>${project.build.directory}/jacoco-it.exec</jacoco-agent.destfile>
                      </systemPropertyVariables>
                  </configuration>
              </execution>
          </executions>
      </plugin>

      <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.12</version>
          <configuration>
              <includes>
                  <include>com/empirix/**</include>
              </includes>
          </configuration>
          <executions>
              <execution>
                  <id>instrument-ut</id>
                  <goals>
                      <goal>instrument</goal>
                  </goals>
              </execution>
              <execution>
                  <id>restore-ut</id>
                  <goals>
                      <goal>restore-instrumented-classes</goal>
                  </goals>
              </execution>
              <execution>
                  <id>report-ut</id>
                  <goals>
                      <goal>report</goal>
                  </goals>
                  <configuration>
                      <dataFile>${project.build.directory}/jacoco-ut.exec</dataFile>
                      <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
                  </configuration>
              </execution>
              <execution>
                  <id>instrument-it</id>
                  <phase>pre-integration-test</phase>
                  <goals>
                      <goal>instrument</goal>
                  </goals>
              </execution>
              <execution>
                  <id>restore-it</id>
                  <phase>post-integration-test</phase>
                  <goals>
                      <goal>restore-instrumented-classes</goal>
                  </goals>
              </execution>
              <execution>
                  <id>report-it</id>
                  <phase>post-integration-test</phase>
                  <goals>
                      <goal>report</goal>
                  </goals>
                  <configuration>
                      <dataFile>${project.build.directory}/jacoco-it.exec</dataFile>
                      <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
                  </configuration>
              </execution>
              <execution>
                  <id>merge-all</id>
                  <phase>post-integration-test</phase>
                  <goals>
                      <goal>merge</goal>
                  </goals>
                  <configuration>
                      <fileSets>
                          <fileSet>
                              <directory>${project.build.directory}</directory>
                              <includes>
                                  <include>*.exec</include>
                              </includes>
                          </fileSet>
                      </fileSets>
                  </configuration>
              </execution>
              <execution>
                  <id>report-all</id>
                  <phase>post-integration-test</phase>
                  <goals>
                      <goal>report</goal>
                  </goals>
                  <configuration>
                      <dataFile>${project.build.directory}/jacoco.exec</dataFile>
                      <outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory>
                  </configuration>
              </execution>
          </executions>
      </plugin>

我花了几个小时进行调查,但没有找到修复/解决方法。

我已经检查了 dep 和他们的版本,但仍然失败。

java quarkus jacoco java-17 jacoco-maven-plugin
1个回答
0
投票

如果您正在运行测试和 jacoco 报告,则可以使用依赖项作为范围测试。

<dependency>
  <groupId>org.jacoco</groupId>
  <artifactId>org.jacoco.agent</artifactId>
  <classifier>runtime</classifier>
  <scope>test</scope>
  <version>0.8.12</version>
</dependency>

如果您正在运行应用程序并对其进行检测,则只需使用分类器运行时。

<dependency>
  <groupId>org.jacoco</groupId>
  <artifactId>org.jacoco.agent</artifactId>
  <classifier>runtime</classifier>
  <version>0.8.12</version>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.