2016-04-08 7 views
2

Während der Validierung des Unternehmens (vor dem Einsetzen) auf meinem Spring MVC app bekomme ich folgende Fehlermeldung:java.lang.ClassNotFoundException: org.hibernate.bytecode.instrumentation.internal.FieldInterceptionHelper

... 
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) 
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: org/hibernate/bytecode/instrumentation/internal/FieldInterceptionHelper 
    at org.hibernate.jpa.internal.util.PersistenceUtilHelper.isLoadedWithoutReference(PersistenceUtilHelper.java:119) 
    at org.hibernate.jpa.HibernatePersistenceProvider$1.isLoadedWithoutReference(HibernatePersistenceProvider.java:171) 
    at javax.persistence.Persistence$1.isLoaded(Persistence.java:111) 
    at org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:46) 
    at org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:128) 
    at org.hibernate.validator.internal.engine.resolver.CachingTraversableResolverForSingleValidation.isReachable(CachingTraversableResolverForSingleValidation.java:36) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.isReachable(ValidatorImpl.java:1522) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:1507) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:584) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:555) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:490) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:454) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:406) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:204) 
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:108) 
    at org.springframework.validation.DataBinder.validate(DataBinder.java:866) 
    at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.validateIfApplicable(ModelAttributeMethodProcessor.java:164) 
    at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:111) 
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:99) 
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    ... 33 more 
Caused by: java.lang.ClassNotFoundException: org.hibernate.bytecode.instrumentation.internal.FieldInterceptionHelper from [Module "deployment.Employee_Ex.war:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93) 
    ... 59 more 

gibt es die Abhängigkeiten in meiner Pom-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.fussa</groupId> 
    <artifactId>EX</artifactId> 
    <name>EX</name> 
    <packaging>war</packaging> 
    <version>1.0.0-BUILD-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
      <version>1.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.2.4.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.38</version> 
     </dependency> 
     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
      <version>2.9.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jadira.usertype</groupId> 
      <artifactId>usertype.core</artifactId> 
      <version>5.0.0.GA</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>javax.servlet.jsp-api</artifactId> 
      <version>2.3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.3</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-war-plugin</artifactId> 
        <version>2.6</version> 
        <configuration> 
         <warSourceDirectory>WebContent</warSourceDirectory> 
         <failOnMissingWebXml>false</failOnMissingWebXml> 
         <warName>Employee_Ex</warName> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 



</project> 

Das obige Problem existiert nur während der Validierung von Feldern. Wie kann ich dieses Problem lösen? danke für irgendwelche Vorschläge.

+0

Welchen Anwendungsserver verwenden Sie? – Sampada

+0

Ich benutze Wildfly 10 .. – FuSsA

+0

Sie müssen eine jboss-Deployment-Struktur erstellen.XML in Ihrem WAR, um ihm die zur Laufzeit benötigten Spring-Module zur Verfügung zu stellen. – Sampada

Antwort

7

Der genannte Fehler tritt aufgrund eines möglichen Konflikts von Abhängigkeitsversionen auf.

Wildfly bietet bereits beide Hibernate-core und hibernate-Validator Abhängigkeiten in <wildfly_dir> \ modules \ System \ Schichten \ base \ org \ Ruhezustand.

Im Falle WildFly10, sind die Abos Abhängigkeiten sind die folgenden:

  • hibernate-core-5.0.7.Final
  • hibernate-validator-5.2.3.Final

Daher können Sie auf Ihrem pom.xml Ihre Abhängigkeiten im Ruhezustand wie bereitgestellt platzieren und den Container einen eigenen verwenden lassen:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>5.1.0.Final</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>5.2.4.Final</version> 
    <scope>provided</scope> 
</dependency> 

Aber wenn Sie Ihre eigenen Abhängigkeiten zur Verfügung stellen mögen, wie auf WildFly 10 documentation erwähnt, sollen Sie einen jboss-Deployment-structure.xml bieten, wo man im Grunde Wildfly sagen, dass es eigene Abhängigkeiten außer Acht zu lassen:

<jboss-deployment-structure> 
    <deployment> 
     <exclusions> 
      <module name="org.hibernate" slot="main" /> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

Auf diese Weise lädt der Container die Abhängigkeiten, die mit Ihrer Anwendung gepackt wurden und in Ihrem WAR-Ordner WEB-INF/lib vorhanden sind.

EDIT

Nach merkt man an den source code von PersistenceUtilHelper.isLoadedWithoutReference, gehen, die, in Hibernate 5.1 ist es nicht mehr die Klasse FieldInterceptionHelper, auf der Leitung 119, wo der Fehler auftritt, verweist. Während in der Version 5.0 es still does.

Ich schlage vor, Sie auch die neueste Version der Hibernate-EntityManager Abhängigkeit, um in Übereinstimmung mit den anderen Hibernate Abhängigkeiten zu sein hinzuzufügen:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>5.1.0.Final</version> 
</dependency> 
+0

Ich habe die Datei jboss-deployment-structure.xml zu meinem src/webapp/WEB-INF-Ordner hinzugefügt ... und den ur-code darauf gesetzt ... habe immer noch denselben Fehler! :) – FuSsA

+0

@ FuSsA, überprüfen Sie meine aktualisierte Antwort. – aribeiro

+0

prblm gelöst .. danke dir – FuSsA

1

Das funktioniert für mich folgende:

hibernate-core-5.1.0.Final 
hibernate-entitymanager-5.1.0.Final 
hibernate-validator-5.2.4.Final 
Verwandte Themen