我正在尝试一个spring-boot-starter项目。然后用jpa和一个POSTGRES数据库尝试一个简单的项目。但是,在启动应用程序时,我得到ClassNotFoundException
:
Caused by: java.lang.ClassNotFoundException: org.hibernate.boot.model.naming.ImplicitNamingStrategy
但这怎么可能?我认为spring-boot-starter-jpa会依赖maven来处理所有必需的依赖...
@Configuration
@PropertySource("classpath:application.properties")
public class AuthConfiguration {
@Value("${hibernate.driver_class}")
private String DATABASE_DRIVER_CLASS;
@Value("${hibernate.url}")
private String DATABASE_URL;
@Value("${hibernate.username}")
private String DATABASE_USER;
@Value("${hibernate.password}")
private String DATABASE_PASSWORD;
@Value("${hibernate.dialect}")
private String HIBERNATE_DIALECT;
@Value("${hibernate.packages_to_scan}")
private String HIBERNATE_PACKAGES_TO_SCAN;
@Bean
public DataSource dataSource() {
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(DATABASE_DRIVER_CLASS);
dataSource.setUrl(DATABASE_URL);
dataSource.setUsername(DATABASE_USER);
dataSource.setPassword(DATABASE_PASSWORD);
return dataSource;
}
@Bean
public HibernateTransactionManager transactionManager() {
final HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
final LocalSessionFactoryBean localSessionFactoryBean =
new LocalSessionFactoryBean();
localSessionFactoryBean.setDataSource(dataSource());
localSessionFactoryBean.setPackagesToScan(HIBERNATE_PACKAGES_TO_SCAN);
{
final Properties properties = new Properties();
properties.put("hibernate.dialect", HIBERNATE_DIALECT);
localSessionFactoryBean.setHibernateProperties(properties);
}
return localSessionFactoryBean;
}
}
我正在使用的属性
hibernate.driver_class = org.postgresql.Driver
hibernate.datasource_class = org.postgresql.ds.PGSimpleDataSource
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
hibernate.url = jdbc:postgresql://localhost:5432/test
hibernate.username = postgres
hibernate.password = password
hibernate.show_sql=false
hibernate.generate_statistics=false
hibernate.packages_to_scan=com.test.model
这是我的maven设置
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>auth</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>auth</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4-1201-jdbc41</version>
</dependency>
<!--
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.6.0</version>
</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
我不知道如何解决这个问题。添加hibernate-core依赖本身并没有解决它,因为我在另一个stackoverflow帖子上阅读,但是这样做也感觉不好,因为一切都应该在启动器依赖中......
我缺少什么想法?
答案 0 :(得分:1)
好的,我发现了问题。显然我使用的是一个来自一个包的类... hibernate5 ...而spring-boot-starter-jpa依赖包含了最新的稳定版本。因此,它无法找到所需的任何hibernate5类。
使用... hibernate4 ...而不是我的导入修复了问题。
为了完成,这是我的依赖树:
[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.3.3.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.3.3.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot:jar:1.3.3.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.3.3.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.3.3.RELEASE:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.1.5:compile
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.1.5:compile
[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.16:compile
[INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.16:compile
[INFO] | | \- org.yaml:snakeyaml:jar:1.16:runtime
[INFO] | +- org.springframework.boot:spring-boot-starter-aop:jar:1.3.3.RELEASE:compile
[INFO] | | +- org.springframework:spring-aop:jar:4.2.5.RELEASE:compile
[INFO] | | | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] | | \- org.aspectj:aspectjweaver:jar:1.8.8:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.3.3.RELEASE:compile
[INFO] | | +- org.apache.tomcat:tomcat-jdbc:jar:8.0.32:compile
[INFO] | | | \- org.apache.tomcat:tomcat-juli:jar:8.0.32:compile
[INFO] | | \- org.springframework:spring-jdbc:jar:4.2.5.RELEASE:compile
[INFO] | +- org.hibernate:hibernate-entitymanager:jar:4.3.11.Final:compile
[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] | | +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile
需要使用这个:
**[INFO] | | +- org.hibernate:hibernate-core:jar:4.3.11.Final:compile**
虽然我正在使用这个orm类:
org.springframework.orm.hibernate**5**.LocalSessionFactoryBean
依赖树的其余部分:
[INFO] | | | +- antlr:antlr:jar:2.7.7:compile
[INFO] | | | \- org.jboss:jandex:jar:1.1.0.Final:compile
[INFO] | | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | | \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] | | +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final:compile
[INFO] | | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] | | \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] | +- javax.transaction:javax.transaction-api:jar:1.2:compile
[INFO] | +- org.springframework.data:spring-data-jpa:jar:1.9.4.RELEASE:compile
[INFO] | | +- org.springframework.data:spring-data-commons:jar:1.11.4.RELEASE:compile
[INFO] | | +- org.springframework:spring-orm:jar:4.2.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-context:jar:4.2.5.RELEASE:compile
[INFO] | | | \- org.springframework:spring-expression:jar:4.2.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-tx:jar:4.2.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-beans:jar:4.2.5.RELEASE:compile
[INFO] | | +- org.slf4j:slf4j-api:jar:1.7.16:compile
[INFO] | | \- org.slf4j:jcl-over-slf4j:jar:1.7.16:compile
[INFO] | \- org.springframework:spring-aspects:jar:4.2.5.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-data-rest:jar:1.3.3.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-web:jar:1.3.3.RELEASE:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.3.3.RELEASE:compile
[INFO] | | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.0.32:compile
[INFO] | | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.0.32:compile
[INFO] | | | +- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:8.0.32:compile
[INFO] | | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.0.32:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-validation:jar:1.3.3.RELEASE:compile
[INFO] | | | \- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile
[INFO] | | | +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] | | | \- com.fasterxml:classmate:jar:1.1.0:compile
[INFO] | | +- org.springframework:spring-web:jar:4.2.5.RELEASE:compile
[INFO] | | \- org.springframework:spring-webmvc:jar:4.2.5.RELEASE:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.5:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.5:compile
[INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.6.5:compile
[INFO] | \- org.springframework.data:spring-data-rest-webmvc:jar:2.4.4.RELEASE:compile
[INFO] | +- org.springframework.data:spring-data-rest-core:jar:2.4.4.RELEASE:compile
[INFO] | | +- org.springframework.hateoas:spring-hateoas:jar:0.19.0.RELEASE:compile
[INFO] | | +- org.springframework.plugin:spring-plugin-core:jar:1.2.0.RELEASE:compile
[INFO] | | \- org.atteo:evo-inflector:jar:1.2.1:compile
[INFO] | \- com.github.fge:json-patch:jar:1.7:compile
[INFO] | +- com.github.fge:jackson-coreutils:jar:1.6:compile
[INFO] | | +- com.github.fge:msg-simple:jar:1.1:compile
[INFO] | | | \- com.github.fge:btf:jar:1.2:compile
[INFO] | | \- com.google.guava:guava:jar:16.0.1:compile
[INFO] | \- com.google.code.findbugs:jsr305:jar:2.0.1:compile