简体   繁体   English

如何解决 TomEE 8.x、Hibernate 5.4 和 Java 8 的 ASM 问题?

[英]How to cure ASM issues with TomEE 8.x, Hibernate 5.4 and Java 8?

According to this page, TomEE 8.0 is compatible with Java 8: http://tomee.apache.org/master/docs/java-compatibility.html根据此页面,TomEE 8.0 兼容 Java 8: http://tomee.apache.org/master/docs/java-compatibility.html

However, I am getting some issue setting up a project with TomEE and Hibernate with java 8.但是,我在使用 TomEE 和 Hibernate 与 java 8 设置项目时遇到了一些问题。

I creating a project from the Maven archetype org.apache.openejb.maven:tomee-webapp-archetype version 1.7.1.我从 Maven 原型 org.apache.openejb.maven:tomee-webapp-archetype 版本 1.7.1 创建了一个项目。 My project SDK is a simple JDK 1.8.0_221.我的项目 SDK 是一个简单的 JDK 1.8.0_221。

Everything is going fine.一切顺利。 Running the mvn package and mvn tomee:run starts a sample app application which is working perfectly.运行mvn packagemvn tomee:run启动一个运行良好的示例应用程序。

Now I go to my pom.xml file and I add the Hibernate dependency:现在我将 go 添加到我的 pom.xml 文件中,并添加 Hibernate 依赖项:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.4.14.Final</version>
</dependency>

with no more modification on the project.无需对项目进行更多修改。 mvn package still works fine. mvn package仍然可以正常工作。 But when starting the application I get the following:但是当启动应用程序时,我得到以下信息:

[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< org.example:TomEETest >------------------------
[INFO] Building TomEETest TomEE Webapp 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO] 
[INFO] --- tomee-maven-plugin:1.7.1:run (default-cli) @ TomEETest ---
[INFO] TomEE was unzipped in '/Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee'
[INFO] Removed not mandatory default webapps
[INFO] Installed '/Users/bcassistat/IdeaProjetcs/TomEETest/target/TomEETest-1.0-SNAPSHOT.war' in /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT.war
[INFO] Running 'org.apache.openejb.maven.plugin.run'. Configured TomEE in plugin is localhost:8080 (plugin shutdown port is 8005 and https port is 8443)
Started server process on port: 8080
May 04, 2020 5:47:47 PM org.apache.catalina.core.AprLifecycleListener init
INFOS: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/bcassistat/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
May 04, 2020 5:47:47 PM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["http-bio-8080"]
May 04, 2020 5:47:47 PM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["ajp-bio-8009"]
May 04, 2020 5:47:48 PM org.apache.openejb.util.OptionsLog info
INFOS: Using 'tomee.remote.support=true'
May 04, 2020 5:47:48 PM org.apache.openejb.util.OptionsLog info
INFOS: Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: ********************************************************************************
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: OpenEJB http://openejb.apache.org/
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: Startup: Mon May 04 17:47:48 EDT 2020
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: Version: 4.7.1
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: Build date: 20140912
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: Build time: 01:43
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: ********************************************************************************
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: openejb.home = /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee
May 04, 2020 5:47:48 PM org.apache.openejb.OpenEJB$Instance <init>
INFOS: openejb.base = /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee
May 04, 2020 5:47:48 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
INFOS: Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@587c290d
May 04, 2020 5:47:48 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
INFOS: Succeeded in installing singleton service
May 04, 2020 5:47:48 PM org.apache.openejb.config.ConfigurationFactory init
INFOS: openejb configuration file is '/Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/conf/tomee.xml'
[INFO] Waiting for command: [quit, exit, reload]
May 04, 2020 5:47:48 PM org.apache.openejb.config.ConfigurationFactory configureService
INFOS: Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
May 04, 2020 5:47:48 PM org.apache.openejb.config.ConfigurationFactory configureService
INFOS: Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
May 04, 2020 5:47:48 PM org.apache.openejb.util.OptionsLog info
INFOS: Using 'openejb.system.apps=false'
May 04, 2020 5:47:48 PM org.apache.openejb.util.OptionsLog info
INFOS: Using 'openejb.deployments.classpath=false'
May 04, 2020 5:47:48 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFOS: Creating TransactionManager(id=Default Transaction Manager)
May 04, 2020 5:47:49 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFOS: Creating SecurityService(id=Tomcat Security Service)
May 04, 2020 5:47:49 PM org.apache.openejb.server.SimpleServiceManager start
INFOS:   ** Bound Services **
May 04, 2020 5:47:49 PM org.apache.openejb.server.SimpleServiceManager printRow
INFOS:   NAME                 IP              PORT  
May 04, 2020 5:47:49 PM org.apache.openejb.server.SimpleServiceManager start
INFOS: -------
May 04, 2020 5:47:49 PM org.apache.openejb.server.SimpleServiceManager start
INFOS: Ready!
May 04, 2020 5:47:49 PM org.apache.catalina.startup.Catalina load
INFOS: Initialization processed in 2002 ms
May 04, 2020 5:47:49 PM org.apache.tomee.catalina.OpenEJBNamingContextListener bindResource
INFOS: Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
May 04, 2020 5:47:49 PM org.apache.openejb.assembler.classic.Assembler createRecipe
INFOS: Creating Resource(id=UserDatabase)
May 04, 2020 5:47:49 PM org.apache.catalina.core.StandardService startInternal
INFOS: Démarrage du service Catalina
May 04, 2020 5:47:49 PM org.apache.catalina.core.StandardEngine startInternal
INFOS: Starting Servlet Engine: Apache Tomcat (TomEE)/7.0.55 (1.7.1)
May 04, 2020 5:47:49 PM org.apache.catalina.startup.HostConfig deployWAR
INFOS: Déploiement de l'archive /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT.war de l'application web
May 04, 2020 5:47:49 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
INFOS: ------------------------- localhost -> /
May 04, 2020 5:47:49 PM org.apache.openejb.util.JarExtractor extract
INFOS: Extracting jar: /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT.war
May 04, 2020 5:47:49 PM org.apache.openejb.util.JarExtractor extract
INFOS: Extracted path: /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT
May 04, 2020 5:47:49 PM org.apache.openejb.util.OptionsLog info
INFOS: Using 'openejb.session.manager=org.apache.tomee.catalina.session.QuickSessionManager'
May 04, 2020 5:47:49 PM org.apache.tomee.catalina.TomEEClassLoaderEnricher validateJarFile
AVERTISSEMENT: jar '/Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT/WEB-INF/lib/javax.persistence-api-2.2.jar' contains offending class: javax.persistence.Entity. It will be ignored.
May 04, 2020 5:47:49 PM org.apache.tomee.catalina.TomEEClassLoaderEnricher validateJarFile
AVERTISSEMENT: jar '/Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT/WEB-INF/lib/jboss-transaction-api_1.2_spec-1.1.1.Final.jar' contains offending class: javax.transaction.Transaction. It will be ignored.
May 04, 2020 5:47:49 PM org.apache.catalina.core.ContainerBase addChildInternal
GRAVE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.tomee.catalina.TomEERuntimeException: org.apache.openejb.OpenEJBException: Unable to create annotation scanner for web module : null
    at org.apache.tomee.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:2150)
    at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1134)
    at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1087)
    at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5378)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 10 more
Caused by: org.apache.openejb.OpenEJBException: Unable to create annotation scanner for web module : null
    at org.apache.openejb.config.DeploymentLoader.addWebModule(DeploymentLoader.java:844)
    at org.apache.openejb.config.DeploymentLoader.load(DeploymentLoader.java:216)
    at org.apache.tomee.catalina.TomcatWebAppBuilder.loadApplication(TomcatWebAppBuilder.java:2148)
    ... 17 more
Caused by: java.lang.IllegalArgumentException
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinder.java:1148)
    at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:139)
    at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:152)
    at org.apache.openejb.config.FinderFactory$OpenEJBAnnotationFinder.<init>(FinderFactory.java:514)
    at org.apache.openejb.config.FinderFactory.newFinder(FinderFactory.java:259)
    at org.apache.openejb.config.FinderFactory.create(FinderFactory.java:77)
    at org.apache.openejb.config.FinderFactory.createFinder(FinderFactory.java:66)
    at org.apache.openejb.config.DeploymentLoader.addWebModule(DeploymentLoader.java:836)
    ... 19 more

May 04, 2020 5:47:49 PM org.apache.catalina.startup.HostConfig deployWAR
GRAVE: Erreur lors du déploiement de l'archive /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT.war de l'application web
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

May 04, 2020 5:47:49 PM org.apache.catalina.startup.HostConfig deployWAR
INFOS: Deployment of web application archive /Users/bcassistat/IdeaProjetcs/TomEETest/target/apache-tomee/webapps/ROOT.war has finished in 474 ms
May 04, 2020 5:47:49 PM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["http-bio-8080"]
May 04, 2020 5:47:49 PM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["ajp-bio-8009"]
May 04, 2020 5:47:49 PM org.apache.catalina.startup.Catalina start
INFOS: Server startup in 637 ms

According to my research, it looks like a bug with ASM4 with Java 8 found on this: java.lang.IllegalArgumentException at org.apache.xbean.asm4.ClassReader.<init> .根据我的研究,它看起来像是 ASM4 的一个错误,带有 Java 8 发现: java.lang.IllegalArgumentException at org.apache.xbean.asm4.ClassReader.<init> But the latest TomEE version I am using depends on ASM5 which should support Java 8. And why does the problem occurs only when adding the Hibernate dependency?但是我用的最新的TomEE版本依赖ASM5,应该支持Java 8.为什么只有添加Hibernate依赖才会出现问题? And Hibernate 5.4 seems to be compatible with Java 8.而 Hibernate 5.4 似乎与 Java 8 兼容。

Problem问题

TomEE Webapp Archetype in version 1.7.1 will start a (quite) old TomEE instance (runtime environment), see:版本1.7.1中的TomEE Webapp Archetype将启动一个(相当)旧的 TomEE 实例(运行时环境),请参阅:

INFOS: Starting Servlet Engine: Apache Tomcat (TomEE)/7.0.55 ( 1.7.1)信息:启动 Servlet 引擎:Apache Tomcat (TomEE)/7.0.55 ( 1.7.1)

and

INFOS: Build date: 2014 0912信息:建造日期: 2014 0912

Solution解决方案

Instead, use the TomEE Webapp Archetype in version 8.0.x (latest: 8.0.6 ).相反,使用版本8.0.x (最新: 8.0.6 )中的TomEE Webapp Archetype This will fix the ASM situation as the runtime dependencies on container start-up will match those of Hibernate 5.4.x.这将修复 ASM 情况,因为对容器启动的运行时依赖性将与 Hibernate 5.4.x 的依赖性相匹配。

As a reminder: Check/verify every (compile and) runtime dependency of Hibernate 5.4.x is provided in the /lib directory of the container environment, or bundled in the .war file of your application.提醒一下:检查/验证Hibernate 5.4.x 的每个(编译和)运行时依赖项都在容器环境的/lib目录中提供,或者捆绑在应用程序的.war文件中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Hibernate中使用TomEE - How to use TomEE with Hibernate 流口水 8.x Java 8 兼容性 - Drools 8.x Java 8 Compatibility 如何在 ElasticSerch 8.x 的新 Java API 中折叠 - How to do collpose in new Java API for ElasticSerch 8.x 如何解决&#39;UnsatisfiedLinkError&#39;-java.library.path中没有rxtxSerial-在JArduino中? - How to cure 'UnsatisfiedLinkError' - no rxtxSerial in java.library.path - in JArduino? 如何使用 Java 低级客户端配置连接 Elasticsearch(8.x),因为 RestHightLevelClient 已弃用 - How to connect Elasticsearch(8.x) using Java low level client configuration as RestHightLevelClient is deprecated 如何解决Hibernate异常的原因“调用setter时发生IllegalArgumentException”? - How do I cure the cause of Hibernate exception “IllegalArgumentException occurred while calling setter”? 为什么建议使用Yourkit 8.X仅分析Java 5应用程序? - Why does Yourkit 8.X is recommended to profile only java 5 applications? Hibernate,TomEE上的Postgresql - Hibernate, Postgresql on TomEE 如何解决对AWS Java SDK DynamoDB的调用导致ExpiredTokenException? - How do I cure a call to the AWS Java SDK DynamoDB resulting in an ExpiredTokenException? 如何在Oracle 8.x系列中以编程方式替换字符 - How to replace a character programmatically in Oracle 8.x series
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM