2014-10-24 2 views
0

Недавно я решил добавить весеннюю загрузку к существующему проекту Spring, который использует спящий режим, настроенный с помощью java-кода. У меня есть этот файл pom.xml:Ошибка при запуске контекста Tomcat с Spring-Boot: java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSource

<?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.spring</groupId> 
    <artifactId>app</artifactId> 
    <version>0.1.0</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.1.8.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-web</artifactId> 
      </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-config</artifactId> 
      </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-taglibs</artifactId> 
      </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.3.6.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      </dependency> 
    </dependencies> 

    <properties> 
     <start-class>com.spring.app.Application</start-class> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

При попытке запуска приложения (после команды: MVN компиляции/МВН пакет/Java -jar), я получаю эту ошибку:

Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSource 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at org.springframework.boot.loader.LaunchedURLClassLoader.doLoadClass(LaunchedURLClassLoader.java:168) 
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:134) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 136 common frames omitted 

кого может сказать, чего я здесь не хватает?

+0

Можете ли вы разместить свою конфигурацию? Я подозреваю, что вы настраиваете свой собственный источник данных, что Spring Spring может сделать для вас, просто добавив пару свойств в файл 'application.properties'. –

ответ

0

После двух ответов вывешенные здесь (один был удален), я добавляю эти две зависимости в моей pom.xml:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
    </dependency> 

и удалить это три:

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.6.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     </dependency> 

и это решает проблему.

1

Вам не хватает источника данных. Вы можете разрешить его, либо добавив ГСБД зависимость или вы можете заменить spring-tx, spring-orm и hibernate-core зависимостей с spring-boot-starter-data-jpa и вы должны иметь все зависимости сохраняемости требуемые в Спринг загрузки проекта:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-jpa</artifactId> 
</dependency> 
+1

Хорошо, я заменяю свои пружинные-tx, пружинные и гибернатные записи этой пружиной-стартером-данными-jpa, но не решу проблему. В моих предыдущих проектах, чтобы использовать этот класс BasicDataSource, мне нужно было добавить apache tomcat в мой путь сборки. Кажется, что в этом контейнере нет контейнера для вставки tomcat? –

+1

Новые версии tomcat имеют tomcat-jdbc как их реализацию DataSource, а не commons-dbcp. Судя по stacktrace, вы сами сконфигурировали источник данных, вместо того, чтобы позволить Spring Boot настроить его для вас. Это предложило бы последнее и устранить зависимость commons-dbcp, которая позволит вам использовать источник данных tomcat-jdbc, который быстрее, чем commons-dbcp. –