2014-06-18 4 views
11

Ich folge http://spring.io/guides/tutorials/data/3; Ich bin nicht sicher, was ich falsch gemacht habe, aber ich bekomme weiterhin Ausnahmen, die ich nicht verstehe. Ich habe versucht, mit denselben Ausnahmen nach Fragen zu suchen, aber ohne Erfolg.Fehler beim Erstellen von entityManagerFactory wegen Fehler beim Binden zum Scannen <jar-file>

Stapelüberwachung: http://pastebin.com/WYPqS6da

PersistenceConfig.java

@Configuration 
@EnableJpaRepositories 
@EnableTransactionManagement 
public class PersistenceConfig { 

    @Bean 
    public DataSource dataSource() throws SQLException { 
     EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); 
     return builder.setType(EmbeddedDatabaseType.HSQL).build(); 
    } 

    @Bean 
    public EntityManagerFactory entityManagerFactory() throws SQLException { 
     HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
     vendorAdapter.setDatabase(Database.HSQL); 
     vendorAdapter.setGenerateDdl(true); 

     LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); 
     factory.setJpaVendorAdapter(vendorAdapter); 
     factory.setPackagesToScan("com.scrumster.persistence.domain"); 
     factory.setDataSource(dataSource()); 
     factory.afterPropertiesSet(); 

     return factory.getObject(); 
    } 

    @Bean 
    public EntityManager entityManager(EntityManagerFactory entityManagerFactory) { 
     return entityManagerFactory.createEntityManager(); 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager() throws SQLException { 
     JpaTransactionManager txManager = new JpaTransactionManager(); 
     txManager.setEntityManagerFactory(entityManagerFactory()); 
     return txManager; 
    } 

    @Bean 
    public HibernateExceptionTranslator hibernateExceptionTranslator() { 
     return new HibernateExceptionTranslator(); 
    } 
} 

build.gradle:

apply plugin: 'war' 
apply plugin: 'tomcat' 
apply plugin: 'java' 
apply plugin: 'propdeps' 
apply plugin: 'propdeps-maven' 
apply plugin: 'propdeps-idea' 
apply plugin: 'propdeps-eclipse' 
apply plugin: 'eclipse' 
apply plugin: 'idea' 

buildscript { 
    repositories { 
    mavenCentral() 
    maven { 
     url "http://download.java.net/maven/2" 
    } 
    maven { url 'http://repo.spring.io/plugins-release' } 
    } 

    dependencies { 
    classpath 'org.gradle.api.plugins:gradle-tomcat-plugin:0.9.8' 
    classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.1' 
    } 
} 

repositories { 
    mavenCentral() 
    maven { url 'http://repo.spring.io/milestone/'} 
} 

dependencies { 
    def tomcatVersion = '7.0.42' 
    tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}", 
      "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}" 
    tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") { 
     exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj' 
    } 

    compile 'org.springframework:spring-webmvc:4.0.5.RELEASE' 
    compile 'org.springframework.data:spring-data-jpa:1.3.4.RELEASE' 
    compile 'org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final' 
    compile 'org.hibernate:hibernate-entitymanager:4.0.1.Final' 
    compile 'org.springframework.hateoas:spring-hateoas:0.7.0.RELEASE' 
    compile 'com.jayway.jsonpath:json-path:0.8.1' 

    compile 'org.springframework.security:spring-security-web:3.2.0.M2' 
    compile 'org.springframework.security:spring-security-core:3.2.0.M2' 
    compile 'org.springframework.security:spring-security-config:3.2.0.M2' 

    compile 'org.slf4j:slf4j-api:1.7.5' 
    runtime 'org.hsqldb:hsqldb:2.3.2' 
    runtime 'org.slf4j:slf4j-jdk14:1.7.5' 
    runtime 'com.fasterxml.jackson.core:jackson-databind:2.3.3' 
    runtime 'javax.xml.bind:jaxb-api:2.2.9' 

    provided 'javax.servlet:javax.servlet-api:3.0.1' 

    testCompile 'com.jayway.jsonpath:json-path-assert:0.8.1' 
    testCompile 'org.springframework:spring-test:4.0.5.RELEASE' 
    testCompile 'junit:junit:4.11' 
    testCompile "org.mockito:mockito-core:1.9.5" 

} 

task wrapper(type: Wrapper) { 
    gradleVersion = '1.12' 
} 

tomcatRunWar.contextPath = '' 

Stacktrace:

Caused by: java.lang.RuntimeException: Error while reading file:/E:/Files/Source/Workspace-Eclipse2/scrumster/bin/ 
     at org.hibernate.ejb.packaging.NativeScanner.getFilesInJar(NativeScanner.java:193) 
     at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:503) 
     at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:851) 
     ... 58 more 
Caused by: java.io.IOException: invalid constant type: 18 
     at javassist.bytecode.ConstPool.readOne(ConstPool.java:1113) 
     at javassist.bytecode.ConstPool.read(ConstPool.java:1056) 
     at javassist.bytecode.ConstPool.<init>(ConstPool.java:150) 
     at javassist.bytecode.ClassFile.read(ClassFile.java:765) 
     at javassist.bytecode.ClassFile.<init>(ClassFile.java:109) 

Ich hoffe, jemand könnte mich auf die richtige Quelle hinweisen, oder mir in dieser misslichen Lage helfen.

Antwort

33

Der Fehler:

invalid constant type: 18 

Zeigt an, dass Sie die Gläser mit Java 8 aufgebaut haben, sondern versuchen, die Anwendung in einer niedrigeren Version zu laufen.

Von dem, was ich an anderer Stelle gesehen haben, müssen Sie wahrscheinlich auf eine neuere Version von Javassist wechseln (die den Fehler erzieht), wie die Version mit Java 8 nicht kompatibel verwenden

+0

Siehe meine zusätzliche Bearbeitung - das Problem ist nicht so sehr die Laufzeit als die Tatsache, dass Sie eine inkompatible Bibliothek verwenden (Javassist). Es macht Bytecode-Manipulation, also ist es sensibler für JVM-Versionen als die meisten. – Steve

+0

Ich vermute, dass es sich um eine transitive Abhängigkeit handelt, die durch eine der in Ihrem build.gradle gefundenen Abhängigkeiten verursacht wird. Ich weiß, dass die Eclipse Pom.Der XML-Editor zeigt an, woher Abhängigkeiten kommen. Leider verwende ich Gradle nicht oft, daher bin ich mir nicht sicher, ob ähnliche Tools zur Verfügung gestellt werden. – Steve

+0

Ich habe versucht, die Kompatibilitätsstufe des Projekts auf Java 7 zu reduzieren (anstatt einige meiner Sachen zu aktualisieren) und funktioniere immer noch nicht für mich. – Chad

0

Sie müssen keine Beans für EntityManagerFactory und EntityManager bereitstellen. bieten nur eine Bohne LocalContainerEntityManagerFactoryBean

+2

Hallo, ich bin ganz neu mit Frühling. Können Sie Ihre Antwort erläutern? – Chad

10

hatte ich die Das gleiche Problem bei der Migration eines meiner Projekte nach Java 8. Es wurde behoben, indem die Hibernate-Entitymanager-Artefaktversion von 4.2.0.Final auf 4.3.8.Final aktualisiert wurde.

10

Zunächst erhalten die Version von Javassist, die Arbeit mit Java ist 8:

<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.18.2-GA</version> </dependency>

Wenn Sie Maven verwenden, schließen Sie alle anderen javassit Abhängigkeiten:

`<exclusions> 
    <exclusion> 
     <artifactId>javassist</artifactId> 
     <groupId>org.javassist</groupId> 
    </exclusion> 
</exclusions>` 
+0

Warum denkst du, dass die Version '3.18.2-GA' mit Java arbeitet 8? –

+0

Sie müssen möglicherweise auch die alte groupId ausschließen - ohne die 'org.':' javassist ' –

0

Ich hatte ähnliches Problem. Mein Problem war, dass ich eine andere Abhängigkeit hatte (in meinem Fall jboss weld), die verschiedene Version von javassist verwendete. Ausgeschlossen hat nicht geholfen.

<dependency> 
     <groupId>org.jboss.weld</groupId> 
     <artifactId>weld-se</artifactId> 
     <version>1.0.1-Final</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <artifactId>javassist</artifactId> 
       <groupId>org.javassist</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Also, oben genannten Ausschluss funktioniert nicht. Ich musste einen Workaround für jboss weld finden.

3

Wenn Sie 3.6.10-Endverwendung müssen Sie Javassist auszuschließen sind (ohne org. Präfix)

<dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.6.10.Final</version> 
      <scope>compile</scope> 
      <exclusions> 
       <exclusion> 
        <artifactId>javassist</artifactId> 
        <groupId>javassist</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <!-- javassist with fixed https://issues.jboss.org/browse/JASSIST-174 --> 
     <dependency> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.18.2-GA</version> 
     </dependency>