Jpa 当试图编织类时,EclipseLink抛出ArrayIndexOutOfBoundsException

Jpa 当试图编织类时,EclipseLink抛出ArrayIndexOutOfBoundsException,jpa,playframework,eclipselink,Jpa,Playframework,Eclipselink,我已经有了play框架应用程序(2.3.8),我为其提供了eclipselink-2.5.1.jar代理。在启动期间,我在日志中看到: Weaver在尝试编织类时遇到异常 [我的一个JPA实体类]。例外情况是: java.lang.ArrayIndexOutOfBoundsException:30053 我如何调查问题的原因 可能有什么问题 更新: 因此,将日志记录更改为finest给了我一个堆栈跟踪: EL Finest]: weaver: 2015-07-16 20:52:31.163--S

我已经有了play框架应用程序(2.3.8),我为其提供了eclipselink-2.5.1.jar代理。在启动期间,我在日志中看到:

Weaver在尝试编织类时遇到异常 [我的一个JPA实体类]。例外情况是: java.lang.ArrayIndexOutOfBoundsException:30053

  • 我如何调查问题的原因
  • 可能有什么问题
  • 更新: 因此,将日志记录更改为finest给了我一个堆栈跟踪:

    EL Finest]: weaver: 2015-07-16 20:52:31.163--ServerSession(1547425104)--Thread(Thread[application-akka.actor.default-dispatcher-2,5,main])--java.lang.ArrayIndexOutOfBoundsException: 25970
            at org.eclipse.persistence.internal.libraries.asm.ClassReader.readClass(Unknown Source)
            at org.eclipse.persistence.internal.libraries.asm.ClassReader.getInterfaces(Unknown Source)
            at org.eclipse.persistence.internal.jpa.weaving.ComputeClassWriter.typeImplements(ComputeClassWriter.java:143)
            at org.eclipse.persistence.internal.jpa.weaving.ComputeClassWriter.typeImplements(ComputeClassWriter.java:150)
            at org.eclipse.persistence.internal.jpa.weaving.ComputeClassWriter.getCommonSuperClass(ComputeClassWriter.java:62)
            at org.eclipse.persistence.internal.libraries.asm.ClassWriter.getMergedType(Unknown Source)
            at org.eclipse.persistence.internal.libraries.asm.Frame.merge(Unknown Source)
            at org.eclipse.persistence.internal.libraries.asm.Frame.merge(Unknown Source)
            at org.eclipse.persistence.internal.libraries.asm.MethodWriter.visitMaxs(Unknown Source)
            at org.eclipse.persistence.internal.libraries.asm.MethodAdapter.visitMaxs(Unknown Source)
            at org.eclipse.persistence.internal.jpa.weaving.MethodWeaver.visitMaxs(MethodWeaver.java:152)
            at org.eclipse.persistence.internal.libraries.asm.ClassReader.accept(Unknown Source)
            at org.eclipse.persistence.internal.libraries.asm.ClassReader.accept(Unknown Source)
            at org.eclipse.persistence.internal.jpa.weaving.PersistenceWeaver.transform(PersistenceWeaver.java:93)
            at org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializer$1.transform(JavaSECMPInitializer.java:228)
            at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
            at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
            at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:340)
            at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:124)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListenerMetadata.getClass(EntityListenerMetadata.java:224)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.EntityClassListenerMetadata.process(EntityClassListenerMetadata.java:81)
            at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processListeners(EntityAccessor.java:1220)
            at org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.addEntityListeners(MetadataProcessor.java:138)
            at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:591)
            at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
            at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
            at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
            at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)
            at play.db.jpa.DefaultJPAApi.em(DefaultJPAApi.java:71)
            at play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:123)
            at play.db.jpa.JPA.withTransaction(JPA.java:159)
            at play.db.jpa.TransactionalAction.call(TransactionalAction.java:16)
            at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94)
            at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94)
            at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
            at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
            at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40)
            at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70)
            at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32)
            at scala.concurrent.impl.Future$.apply(Future.scala:31)
            at scala.concurrent.Future$.apply(Future.scala:485)
            at play.core.j.JavaAction.apply(JavaAction.scala:94)
            at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105)
            at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105)
            at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
            at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:104)
            at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:103)
            at scala.Option.map(Option.scala:145)
            at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:103)
            at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:96)
            at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524)
            at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524)
            at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560)
            at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560)
            at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536)
            at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536)
            at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
            at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
            at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
            at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
            at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
            at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
            at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
            at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
    

    但这对我帮助不大。

    这看起来像EclipseLink在处理lambda表达式时使用的ASM处理器中的一个bug。EclipseLink 2.6中修复了该错误。

    尝试使用静态编织器,并将日志设置为“最佳”,看看是否出现异常。请参阅
    dev
    (使用
    activator run
    )或仅在
    prod
    中是否存在此问题?您的配置是否与此处描述的类似:实际上我不确定如何在dev中提供代理,因此我不确定是否存在此问题。在生产环境中,我为我的开始脚本提供了-J-javaagent:/somewhere/org.eclipse.persistence.eclipselink.jar,这就是问题所在。至于配置,它与链接中的配置非常相似(我使用postgresql而不是mysql)。顺便说一句,我没有提到它-持久性工作正常,应用程序启动-但是有这些错误,编织可能不会发生。更新EclipseLink似乎解决了问题。这个问题很可能是由您提到的bug引起的(但我并没有仔细研究)。