Je suis http://spring.io/guides/tutorials/data/3 ; Je ne suis pas Sûr de ce que j'ai mal fait, mais je continue à avoir des exceptions que je ne comprends pas. J'ai essayé de chercher des questions avec les mêmes exceptions en vain.
Trace de pile: 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 = ''
Trace de la pile:
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)
J'espère que quelqu'un pourra m'indiquer la bonne source ou m'aider dans cette situation difficile.
L'erreur:
invalid constant type: 18
Indique que vous avez créé les fichiers JAR avec Java 8, mais tentez d'exécuter l'application dans une version inférieure.
D'après ce que j'ai vu ailleurs, vous devrez probablement passer à une version plus récente de javassist (qui soulève une erreur), car la version que vous utilisez n'est pas compatible avec Java 8.
Tout d’abord, obtenez la version de javassist
qui fonctionne avec Java 8:
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.2-GA</version>
</dependency>
Si vous utilisez maven, excluez toutes les autres dépendances javassist
:
`<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>org.javassist</groupId>
</exclusion>
</exclusions>`
J'ai eu le même problème lors de la migration de l'un de mes projets vers Java 8. Ce problème a été résolu en mettant à jour la version d'artefact hibernate-entitymanager de 4.2.0.Final à 4.3.8.Final.
Si vous utilisez 3.6.10-Final, vous devez exclure javassist (sans org. prefix)
<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>
J'ai eu le même problème. Mon problème était que j'avais une autre dépendance (dans mon cas, la soudure en masse) qui utilisait une version différente de javassist. L'exclusion n'a pas aidé.
<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>
Donc, l’exclusion ci-dessus ne fonctionne pas. Je devais trouver une solution de contournement pour la soudure de jboss.
Il n'est pas nécessaire de fournir des beans pour EntityManagerFactory et EntityManager. Fournissez simplement un bean LocalContainerEntityManagerFactoryBean