2016-02-15 3 views
1

Я использую Intellij с Spring и Hibernate. Я получаю эту странную ошибку всякий раз, когда я развертываю свое приложение с помощью Tomcat.Ошибка создания буфера из файла FileNotFoundException

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testController' defined in file [C:\Users\Pawel\IdeaProjects\Spring2\target\com.pawel-1.0-SNAPSHOT\WEB-INF\classes\com\pawel\controller\TestController.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.pawel.controller.TestController]: Constructor threw exception; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [WEB-INF/TestServlet-servlet.xml]; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/TestServlet-servlet.xml] cannot be opened because it does not exist 

Но у меня есть этот файл. Даже когда я делаю CTRL + SPACE внутри "... context = new ClassPathXmlApplicationContext (" "), он обнаруживает его и автоматически завершает его, как показано ниже. Я спросил друзей, но никто не мог мне помочь. Также, эта проблема возникла, когда я добавил другие бобы в spring.xml, проблема не возникла, когда у меня был только последний бит (без спящего режима)

Ошибка показано в веб-браузере HTTP Status 500 - Servlet.init() для сервлета TestServlet выбросил исключение

My files

Мой контроллер

package com.pawel.controller; 

import com.pawel.dao.PersonDAO; 
import com.pawel.model.Person; 
import org.springframework.context.ConfigurableApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
@RequestMapping("/") 
public class TestController { 

    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("WEB-INF/TestServlet-servlet.xml"); 

    PersonDAO personDAO = context.getBean(PersonDAO.class); 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String testView(ModelMap model){ 
     Person person = new Person(); 
     person.setAge(10); 
     person.setName("John"); 
     person.setLastName("Smith"); 
     personDAO.save(person); 
     model.addAttribute("person", person); 
     model.addAttribute("message", "Hello"); 
     return "test"; 
    } 
} 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1"> 

<display-name>Spring MVC Application</display-name> 

<servlet> 
    <servlet-name>TestServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>TestServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 

TestServlet-servlet.xml (весна файл)

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd"> 

    <context:component-scan base-package="com.pawel" /> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
      destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/db" /> 
     <property name="username" value="root" /> 
    </bean> 

    <!-- Hibernate 4 SessionFactory Bean definition --> 
    <bean id="hibernate4AnnotatedSessionFactory" 
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>com.pawel.model.Person</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.current_session_context_class">thread</prop> 
       <prop key="hibernate.show_sql">false</prop> 
      </props> 
     </property> 
    </bean> 


    <bean id="personDAO" class="com.pawel.dao.PersonDAOImpl"> 
     <property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
    </bean> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/views/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

    </beans> 

pom.xml (специалист)

<?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>Spring2</groupId> 
    <artifactId>com.pawel</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 


    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>4.2.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>4.0.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.2.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.2.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>4.2.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.2.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>4.0.3.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.1.2</version> 
     </dependency> 

     <!-- hibernate--> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.9</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>20030825.184428</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-pool</groupId> 
      <artifactId>commons-pool</artifactId> 
      <version>20030825.183949</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.3.5.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
      <version>3.2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.5.Final</version> 
     </dependency> 
    </dependencies> 

</project> 
+0

Вы уверены, что TestServlet-servlet.xml был включен в файл войны, развернутого в Tomcat? –

+0

Как я могу это проверить? Я новичок в Tomcat. Связано ли это с webapps где-то в местоположении tomcat? – Galaxiset

+0

Вы можете либо просмотреть файл войны (т. Е. Jar -tvf ), либо просмотреть папку webapps//WEB-INF, чтобы узнать, есть ли она. Я подозреваю, что ваша среда разработки не упаковывала его в качестве файла ресурсов. –

ответ

0

с сообщением об ошибке nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/TestServlet-servlet.xml] cannot be opened because it does not exist => TOMCAT не обнаружить файл ,

Вы должны поставить его под WEB-INF, и вам нужно развернуть свою войну/банку под ~\tomcat\webapps. Когда вы развернете его, у вас будет папка с тем же именем вашего war \ jar, и вы можете проверить, существует ли ваш TestServlet-servlet.xml или нет? также вы можете проверить, существует ли файл с открытием вашей войны/банкой с помощью winrar.

+0

@Galaxiset, вы также можете использовать аннотации, в которых вы можете предоставить свои объявления bean-компонентов в java-конфигурационном классе. –

0

Ответ на ваш вопрос

  1. Пожалуйста, место для вашего TestServlet-servlet.xml в папку SRC/тест/ресурсы и упаковать архив войны. Это позволяет вашему контексту приложения находить ваш файл TestServlet-servlet.xml.
  2. Пожалуйста, обратитесь к изображению ниже.

Test

Смежные вопросы