Java 从jar导入springbean
我一直在阅读有关从包含在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实现,这是一个错误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。到目前为止,这个文件是相当斯巴达的,如下所示。但是,当我将这个项
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