You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Eclipse、Tomcat及CentOS中配置EclipseLink javaagent依赖并启用织入

EclipseLink织入功能配置报错及解决方法

问题描述

使用Eclipse、Tomcat与EclipseLink开发Web应用时,需在Eclipse的Java VM参数中配置javaagent:eclipselink.jar以启用EclipseLink织入功能。添加参数-javaagent:/Users/user/Development/lib/eclipselink/2.7.10/eclipselink.jar后,启动Tomcat出现如下报错:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    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 java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:491)
    at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:503)
Caused by: java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceUnitInfo
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:375)
    at org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializerAgent.initializeFromAgent(JavaSECMPInitializerAgent.java:46)
    at org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializerAgent.premain(JavaSECMPInitializerAgent.java:41)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: javax.persistence.spi.PersistenceUnitInfo
    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:520)
    ... 10 more
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at open/src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 422
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed

补充情况:

  • 该配置运行单元测试无报错
  • 若以-Djavaagent:/Users/user/Development/lib/eclipselink/2.7.10/eclipselink.jar启动Tomcat,服务可运行但织入功能未生效

环境信息

  • Java 17 SE
  • Tomcat 9.0.56
  • EclipseLink 2.7.10(用于JPA)
  • MySQL 8.0.28
  • macOS Ventura

解决方法

推测eclipselink.jar依赖jakarta.persistence_2.2.3.jar,后续找到解决方案:在JVM参数中添加以下配置(CentOS环境下需替换为对应文件路径),即可消除报错并使织入功能正常生效:

-Xbootclasspath/a:/eclipselink/2.7.13/jakarta.persistence_2.2.3.jar -javaagent:/eclipselink/2.7.13/eclipselink_2.7.13.jar

内容的提问来源于stack exchange,提问作者Ndrik7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:12:50