Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java 从jar导入springbean_Java_Spring_Spring Mvc - Fatal编程技术网

Java 从jar导入springbean

Java 从jar导入springbean,java,spring,spring-mvc,Java,Spring,Spring Mvc,我一直在阅读有关从包含在jar文件中的项目导入bean的问题。但是我在我的项目中,我们称之为项目A,它只是WEB-INF文件夹中的一个mvc-config.xml,src/main/resources/spring文件夹中的application-config.xml都来自SpringWebMaven模板 我通过注释在类中定义bean、服务和存储库,直到现在,我还不需要任何其他配置,比如在mvc-config.xml中定义bean。到目前为止,这个文件是相当斯巴达的,如下所示。但是,当我将这个项

我一直在阅读有关从包含在jar文件中的项目导入bean的问题。但是我在我的项目中,我们称之为项目A,它只是WEB-INF文件夹中的一个mvc-config.xml,src/main/resources/spring文件夹中的application-config.xml都来自SpringWebMaven模板

我通过注释在类中定义bean、服务和存储库,直到现在,我还不需要任何其他配置,比如在mvc-config.xml中定义bean。到目前为止,这个文件是相当斯巴达的,如下所示。但是,当我将这个项目打包到一个jar中,并将其导入到另一个项目中时,让我们调用项目B并尝试在项目B中自动连接Dao实现,这是一个错误

Severe: Context initialization failed
java.lang.NoClassDefFoundError: com/mycompany/dao/EntityDao
被抛出。请注意,这个特定的类是通过接口实现定义的,该接口实现在本机项目中自动连接得非常好

出现这些问题是因为我没有在项目B中正确导入项目A,还是为了使用项目A中的@Repository、@Entity和其他Spring内容,我需要做另一种安排?我应该怎么做才能在项目B中使用来自项目A的服务?谢谢

项目B mvc-config.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        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.mycompany"/>

<mvc:annotation-driven />

<context:annotation-config/>

<mvc:default-servlet-handler/>

<import resource="classpath*:/WEB-INF/mvc-config.xml" />
<import resource="classpath*:/spring/application-config.xml" />

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

您似乎走错了路,首先,您的项目有一个mvc-config.xml文件,这意味着它是一个web项目,我从未见过在另一个web项目中使用web项目,如果您将项目打包为jar,请确保它包含web-INF文件夹。而不是确保项目jar在运行时可用。这是一个maven项目,您是如何运行它的?

您似乎走错了路,首先,您的项目有一个mvc-config.xml文件,这意味着它是一个web项目,我从未见过在另一个web项目中使用web项目,如果您将项目打包为jar,请确保它包含web-INF文件夹。而不是确保项目jar在运行时可用。这是一个maven项目吗?你是如何运行它的?@varun,事实上,我在之前的一个web项目中进行了降级,因为我的整个工作区都进行了重组。根据您的提示,我决定从头开始测试相同的架构,从SpringMaven的简单项目开始,一切都很好。事实上,我的老项目中令人回忆的web结构不适合用作jar。请回答,我会接受的。谢谢
Severe: Context initialization failed
java.lang.NoClassDefFoundError: com/mycompany/EntityDao
  at java.lang.Class.getDeclaredMethods0(Native Method)
  at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
  at java.lang.Class.getDeclaredMethods(Class.java:1845)
  at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571)
  at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:489)
  at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:473)
  at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:534)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:663)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:593)
  at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1394)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:385)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:354)
  at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:97)
  at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:609)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
  at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
  at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
  at org.apache.catalina.core.StandardService.start(StandardService.java:525)
  at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
  at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: com.mycompany.EntityDao
  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
  ... 33 more