Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 未找到Spring数据web支持CRUD存储库_Maven_Spring Mvc_Jpa_Spring Data Jpa_Tomcat8 - Fatal编程技术网

Maven 未找到Spring数据web支持CRUD存储库

Maven 未找到Spring数据web支持CRUD存储库,maven,spring-mvc,jpa,spring-data-jpa,tomcat8,Maven,Spring Mvc,Jpa,Spring Data Jpa,Tomcat8,我有一个使用JPA的工作项目。但后来我发现了Spring数据的威力。所以我开始研究它,使用spring,我成功地配置了一个控制台应用程序,但对于一个web项目来说,这并不明显。 我得到这个错误: 03-Jan-2015 23:52:11.550 SEVERE [localhost-startStop-1] org.springframework.web. context.ContextLoader.initWebApplicationContext Context initialization

我有一个使用JPA的工作项目。但后来我发现了Spring数据的威力。所以我开始研究它,使用spring,我成功地配置了一个控制台应用程序,但对于一个web项目来说,这并不明显。 我得到这个错误:

03-Jan-2015 23:52:11.550 SEVERE [localhost-startStop-1] org.springframework.web.
context.ContextLoader.initWebApplicationContext Context initialization failed
 java.lang.NoClassDefFoundError: org/springframework/data/repository/CrudReposit
ory
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(Webapp
ClassLoader.java:2477)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoa
der.java:880)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1290)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1173)
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2663)
        at java.lang.Class.getDeclaredConstructors(Class.java:2012)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanP
ostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor
.java:267)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanF
actory.java:1059)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1032)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:505)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getOb
ject(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:229)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:298)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.
preInstantiateSingletons(DefaultListableBeanFactory.java:762)
        at org.springframework.context.support.AbstractApplicationContext.finish
BeanFactoryInitialization(AbstractApplicationContext.java:757)
        at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:480)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebA
pplicationContext(ContextLoader.java:403)
        at org.springframework.web.context.ContextLoader.initWebApplicationConte
xt(ContextLoader.java:306)
        at org.springframework.web.context.ContextLoaderListener.contextInitiali
zed(ContextLoaderListener.java:106)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContex
t.java:4749)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContex
t.java:5175)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:724)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:70
0)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)

        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav
a:1071)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig
.java:1722)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:51
1)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.springframework.data.repository
.CrudRepository
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1320)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1173)
        ... 38 more

03-Jan-2015 23:52:11.563 SEVERE [localhost-startStop-1] org.apache.catalina.core
.StandardContext.startInternal Error listenerStart
03-Jan-2015 23:52:11.565 SEVERE [localhost-startStop-1] org.apache.catalina.core
.StandardContext.startInternal Erreur de dΘmarrage du contexte [/tp12] suite aux
 erreurs prΘcΘdentes
03-Jan-2015 23:52:11.568 INFO [localhost-startStop-1] org.springframework.web.co
ntext.support.AnnotationConfigWebApplicationContext.doClose Closing Root WebAppl
icationContext: startup date [Sat Jan 03 23:52:09 CET 2015]; root of context hie
rarchy
03-Jan-2015 23:52:11.580 WARNING [localhost-startStop-1] org.springframework.web
.context.support.AnnotationConfigWebApplicationContext.doClose Exception thrown
from LifecycleProcessor on context close
 java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'ref
resh' before invoking lifecycle methods via the context: Root WebApplicationCont
ext: startup date [Sat Jan 03 23:52:09 CET 2015]; root of context hierarchy
        at org.springframework.context.support.AbstractApplicationContext.getLif
ecycleProcessor(AbstractApplicationContext.java:357)
        at org.springframework.context.support.AbstractApplicationContext.doClos
e(AbstractApplicationContext.java:877)
        at org.springframework.context.support.AbstractApplicationContext.close(
AbstractApplicationContext.java:836)
        at org.springframework.web.context.ContextLoader.closeWebApplicationCont
ext(ContextLoader.java:579)
        at org.springframework.web.context.ContextLoaderListener.contextDestroye
d(ContextLoaderListener.java:115)
        at org.apache.catalina.core.StandardContext.listenerStop(StandardContext
.java:4792)
        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext
.java:5392)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:724)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:70
0)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)

        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.jav
a:1071)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig
.java:1722)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:51
1)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:617)
        at java.lang.Thread.run(Thread.java:745)
我的结构和他们推荐的一样

AppConfig.java AuthorControl.java persistence.xml

org.hibernate.jpa.HibernatePersistenceProvider
pom.xml

4.0.0
fr.eservices.xxNAMExx
普罗捷
1.0-快照
罐子
Projet
org.springframework.boot
spring启动程序父级
1.1.10.发布
WEB-INF
WEB-INF/课程
箱子
WEB-INF/src
WEB-INF/测试
org.apache.maven.plugins
maven编译器插件
3.2
1.8
1.8
WEB-INF/资源
javax.servlet
javax.servlet-api
3.1.0
假如
org.hibernate
休眠实体管理器
4.3.7.最终版本
运行时
com.h2数据库
氢
1.4.182
假如
fr.E服务
代码检查器
1.2
测试
朱尼特
朱尼特
4.11
测试
org.springframework
SpringWebMVC
4.1.2.1发布
编译
jstl
jstl
1.2
编译
org.springframework.data
spring数据jpa
编译

您的源和资源文件夹看起来很好,因为您已经在项目描述符的
部分下定义了latters

似乎可以避免的主要问题是您在
AuthorControl
类中定义的两级依赖项注入,在该类中,您使用以下两种方法注入
AuthorRepository

  • 现场注入:

  • 和构造函数注入:

    @自动连线 公共AuthorControl(AuthorRepository用户存储库){ //... }


据我所知,你应该保留这两份声明中的任何一份。因此,删除字段上的
@Autowired
注释可以解决问题。

您将persistence.xml文件放在哪里了?在哪个路径下?projet-jee/WEB-INF/resources/META-INF/persistence.xml如果我为存储库类注释@Autowired,则生成表。您解决了问题吗?第一个
@Autowired AuthorRepository userRepository被注释了,我们留下它只是为了表明我测试了这两个选项。
@Configuration
@EnableWebMvc
@EnableSpringDataWebSupport
@ComponentScan({"impl","jpa","designelements"})
public class AppConfig extends WebMvcConfigurationSupport{

    @Bean
    public InternalResourceViewResolver getJspViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("views/");
        resolver.setSuffix(".jsp");
        resolver.setOrder(0);        
        return resolver;
    }

    @Bean
    public EntityManager getEntityManager() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("myapp");
        return emf.createEntityManager();
    }

    @Bean
    public EntityManagerFactory getEntityManagerFactory() {
        return Persistence.createEntityManagerFactory("myapp");

    }

}
@Controller
@ComponentScan({ "impl", "jpa", "designelements" })
public class AuthorControl {

//   @Autowired
//   AuthorRepository userRepository;

    private final AuthorRepository userRepository;

    @Autowired
    public AuthorControl(AuthorRepository userRepository) {
        //Assert.notNull(this.userRepository, "Repository must not be null!");
        this.userRepository = userRepository;
    }

    @RequestMapping(value = "/authors.html", method = RequestMethod.GET)
    public String listAuthors(Model model) {
        // dao.create("abc", "def");
        // List<Author> authors = dao.listAll();
        // model.addAttribute("authors", authors);

        // // fetch customers by last name
        List<Author> authors = this.userRepository.findByLastName("def");
        model.addAttribute("authors", authors);

        return "authors";

    }
@Entity
@Table(name="authors")
public class Author {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id")
    public long id;

    @Column(name="firstname")
    public String firstname;

    @Column(name="lastname")
    public String lastname;

    @Override
    public String toString() {
        return firstname + " " + lastname;
    }

    public static Author create(String firstName, String lastName) {
        Author author = new Author();
        author.firstname = firstName;
        author.lastname = lastName;
        return author;
    }


}
<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">
   <persistence-unit name="myapp">
      <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
      <properties>
        <property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
        <property name="hibernate.connection.url" value="jdbc:h2:./db"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="hibernate.show_sql" value="true" />
      </properties>
   </persistence-unit>
</persistence>  
<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>fr.eservices.xxNAMExx</groupId>
    <artifactId>projet-jee</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Projet</name>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.10.RELEASE</version>
    </parent>

    <build>
        <directory>WEB-INF</directory>
        <outputDirectory>WEB-INF/classes</outputDirectory>
        <testOutputDirectory>bin</testOutputDirectory>
        <sourceDirectory>WEB-INF/src</sourceDirectory>
        <testSourceDirectory>WEB-INF/test</testSourceDirectory>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

        </plugins>

        <resources>
            <resource>
                <directory>WEB-INF/resources</directory>
            </resource>
        </resources>

    </build>

    <dependencies>

        <!-- Running dependencies -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.7.Final</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.182</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>fr.eservices</groupId>
            <artifactId>code-checker</artifactId>
            <version>1.2</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.2.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
            <scope>compile</scope>
        </dependency>
        <!-- Spring Data -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>
@Autowired
AuthorRepository userRepository;