当前位置: 首页 > 知识库问答 >
问题:

JAVAlang.NoClassDefFoundError:无法初始化类com.google.注射内部的cglib。核心$反思

施飞鸿
2023-03-14

我试图在Jenkins从机上运行Selenium脚本。由于某些漏洞,我无法使用Java 1.8。我在slave agent上安装了JDK 9.0.4,但在尝试从Jenkins运行脚本时,出现以下异常

设置:
Jenkins 2.303.3
Java版本:9.0.4

using settings config with name settings.xml
08:34:04 Replacing all maven server entries not found in credentials list is true
08:34:05 ERROR: Failed to parse POMs
08:34:05 java.io.IOException: Remote call on JNLP4-connect connection from VSXXXJENKINS16QA.FLEET.AD/XXXXXXfailed
08:34:05    at hudson.remoting.Channel.call(Channel.java:1005)
08:34:05    at hudson.FilePath.act(FilePath.java:1166)
08:34:05    at hudson.FilePath.act(FilePath.java:1155)
08:34:05    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:985)
08:34:05    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:689)
08:34:05    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:514)
08:34:05    at hudson.model.Run.execute(Run.java:1888)
08:34:05    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
08:34:05    at hudson.model.ResourceController.execute(ResourceController.java:99)
08:34:05    at hudson.model.Executor.run(Executor.java:431)
08:34:05 Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: Could not initialize class com.google.inject.internal.cglib.core.$ReflectUtils
08:34:05    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2232)
08:34:05    at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
08:34:05    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3969)
08:34:05    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4829)
08:34:05    at com.google.common.cache.LocalCache$LocalManualCache.getUnchecked(LocalCache.java:4834)
08:34:05    at com.google.inject.internal.FailableCache.get(FailableCache.java:48)
08:34:05    at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:50)
08:34:05    at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:136)
08:34:05    at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:533)
08:34:05    at com.google.inject.internal.AbstractBindingProcessor$Processor$1.run(AbstractBindingProcessor.java:160)
08:34:05    at com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44)
08:34:05    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:123)
08:34:05    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
08:34:05    at com.google.inject.Guice.createInjector(Guice.java:96)
08:34:05    at com.google.inject.Guice.createInjector(Guice.java:73)
08:34:05    at com.google.inject.Guice.createInjector(Guice.java:62)
08:34:05    at org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:481)
08:34:05    at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:206)
08:34:05    at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:168)
08:34:05    at hudson.maven.MavenEmbedderUtils.buildPlexusContainer(MavenEmbedderUtils.java:166)
08:34:05    at hudson.maven.MavenEmbedderUtils.buildPlexusContainer(MavenEmbedderUtils.java:159)
08:34:05    at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:110)
08:34:05    at hudson.maven.MavenEmbedder.<init>(MavenEmbedder.java:137)
08:34:05    at hudson.maven.MavenUtil.createEmbedder(MavenUtil.java:211)
08:34:05    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1324)
08:34:05    at hudson.maven.MavenModuleSetBuild$PomParser.invoke(MavenModuleSetBuild.java:1124)
08:34:05    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3338)
08:34:05    at hudson.remoting.UserRequest.perform(UserRequest.java:211)
08:34:05    at hudson.remoting.UserRequest.perform(UserRequest.java:54)
08:34:05    at hudson.remoting.Request$2.run(Request.java:376)
08:34:05    at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:78)
08:34:05    at java.util.concurrent.FutureTask.run(Unknown Source)
08:34:05    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
08:34:05    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
08:34:05    at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:122)
08:34:05    at java.lang.Thread.run(Unknown Source)
08:34:05    Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from VSPWJENKINS16QA.FLEET.AD/10.1.176.32:55500
08:34:05        at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1797)
08:34:05        at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356)
08:34:05        at hudson.remoting.Channel.call(Channel.java:1001)
08:34:05        at hudson.FilePath.act(FilePath.java:1166)
08:34:05        at hudson.FilePath.act(FilePath.java:1155)
08:34:05        at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.parsePoms(MavenModuleSetBuild.java:985)
08:34:05        at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:689)
08:34:05        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:514)
08:34:05        at hudson.model.Run.execute(Run.java:1888)
08:34:05        at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
08:34:05        at hudson.model.ResourceController.execute(ResourceController.java:99)
08:34:05        at hudson.model.Executor.run(Executor.java:431)
08:34:05 Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.google.inject.internal.cglib.core.$ReflectUtils
08:34:05    at com.google.inject.internal.cglib.reflect.$FastClassEmitter.<init>(FastClassEmitter.java:67)
08:34:05    at com.google.inject.internal.cglib.reflect.$FastClass$Generator.generateClass(FastClass.java:72)
08:34:05    at com.google.inject.internal.cglib.core.$DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
08:34:05    at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:216)
08:34:05    at com.google.inject.internal.cglib.reflect.$FastClass$Generator.create(FastClass.java:64)
08:34:05    at com.google.inject.internal.BytecodeGen.newFastClass(BytecodeGen.java:204)
08:34:05    at com.google.inject.internal.DefaultConstructionProxyFactory.create(DefaultConstructionProxyFactory.java:54)
08:34:05    at com.google.inject.internal.ProxyFactory.create(ProxyFactory.java:159)
08:34:05    at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:90)
08:34:05    at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29)
08:34:05    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37)
08:34:05    at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
08:34:05    at com.google.inject.internal.FailableCache$1.load(FailableCache.java:37)
08:34:05    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3568)
08:34:05    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)
08:34:05    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)
08:34:05    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)

共有1个答案

诸正谊
2023-03-14

首先,我认为您应该切换到Java11,因为Java9不再受支持。其次,NoClassDefFoundError是Java运行时尝试加载类定义时抛出的错误,而该类定义不再可用。所需的类定义在编译时存在,但在运行时丢失。

我认为您必须检查目标应用程序的类路径,并确保JAR使用com.google.注射内部的cglib。核心$存在反射

 类似资料:
  • 在之前的章节中, 我们讲到了与系统架构有关的 setup_arch 函数部分,本文会继续从这里开始。 我们为 initrd 预留了内存之后,下一步是执行 olpc_ofw_detect 函数检测系统是否支持 One Laptop Per Child support。 我们不会考虑与平台有关的东西,且会忽略与平台有关的函数。所以我们继续往下看。 下一步是执行 early_trap_init 函数。这

  • 进入内核入口点之前最后的准备工作 这是 Linux 内核初始化过程的第三部分。在上一个部分 中我们接触到了初期中断和异常处理,而在这个部分中我们要继续看一看 Linux 内核的初始化过程。在之后的章节我们将会关注“内核入口点”—— init/main.c 文件中的start_kernel 函数。没错,从技术上说这并不是内核的入口点,只是不依赖于特定架构的通用内核代码的开始。不过,在我们调用 sta

  • 初期中断和异常处理 在上一个 部分 我们谈到了初期中断初始化。目前我们已经处于解压缩后的Linux内核中了,还有了用于初期启动的基本的 分页 机制。我们的目标是在内核的主体代码执行前做好准备工作。 我们已经在 本章 的 第一部分 做了一些工作,在这一部分中我们会继续分析关于中断和异常处理部分的代码。 我们在上一部分谈到了下面这个循环: for (i = 0; i < NUM_EXCEPTION_V

  • 踏入内核代码的第一步(TODO: Need proofreading) 上一章是引导过程的最后一部分。从现在开始,我们将深入探究 Linux 内核的初始化过程。在解压缩完 Linux 内核镜像、并把它妥善地放入内存后,内核就开始工作了。我们在第一章中介绍了 Linux 内核引导程序,它的任务就是为执行内核代码做准备。而在本章中,我们将探究内核代码,看一看内核的初始化过程——即在启动 PID 为 1

  • 在C++98标准里,只有static const声明的整型成员能在类内部初始化,并且初始化值必须是常量表达式。这些限制确保了初始化操作可以在编译时期进行。例如: int var = 7; class X { static const int m1 = 7; // 正确 const int m2 = 7; // 错误:无static static int m3 =

  • 还记得上一章的内容吗 - 跳转到内核入口之前的最后准备?你应该还记得我们已经完成一系列初始化操作,并停在了调用位于init/main.c中的start_kernel函数之前.start_kernel函数是与体系架构无关的通用处理入口函数,尽管我们在此初始化过程中要无数次的返回arch/ 文件夹。如果你仔细看看start_kernel函数的内容,你将发现此函数涉及内容非常广泛。在此过程中约包含了86