2014-09-24 51 views
0

我很抱歉如果這個問題有一個答案已經在某處,我環顧四周,沒有看到任何我可以使用我的優勢。從外部項目使用彈簧注入方面類

java.lang.ClassNotFoundException: com.sample.aspects.SomeAspect 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206) 
at org.springframework.util.ClassUtils.forName(ClassUtils.java:246) 
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:395) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1346) 
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1317) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:623) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:592) 
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1394) 
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:957) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:705) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:578) 
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:622) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 

下面是我使用

<bean id="someAspect" 
    class="com.sample.aspects.SomeAspect" /> 

<aop:aspectj-autoproxy proxy-target-class="true" /> 

的servlet.xml文件中的com.sample.aspects.SomeAspect是:起動了Eclipse中我的Tomcat服務器,我得到這個例外在使用eclipse classpath和gradle導入的外部項目中的類。我假設我只是在我的類路徑上做了一些錯誤,並告訴Spring如何初始化我的方面,但是我如何正確地做到這一點有點失落。有什麼建議麼?我真的希望保持Web應用程序外部的方面,但我想知道Spring AOP是否可能。

如果有幫助,這就是我與gradle這個項目

dependencies{ 
... 
    compile project(':sample-projectwithaspectsclasses') 
} 

com.sample.aspects.SomeAspect的代碼是在樣品projectwithaspectsclasses

+0

如果您仍然對答案感興趣,可以考慮向社區提供一個[SSCCE](http://sscce.org/),以便他們能夠重現您的問題。 – kriegaex 2014-10-02 09:50:37

+0

好主意。我會看到關於將其放在一起並將其放到github上。 – 2014-10-02 10:14:40

回答

0

你有你的外部項目只定義類路徑依賴這就是爲什麼你的編譯沒有失敗,但你需要在運行時這個文件,你可以手動添加這個jar到你的web項目的lib文件夾中,或者我認爲你可以在啓動配置中使用eclipse來執行此操作,並添加運行時依賴項。

+0

這可能會起作用 - 但是當我準備將我的項目部署到外部tomcat服務器並且無法控制運行時依賴關係時會發生什麼? – 2014-09-25 15:55:47

+0

在pom中定義了依賴關係的範圍,如運行時 varun 2014-09-25 16:31:42

+0

我仍然無法確定是什麼導致了這種情況。但是,如果我生成一個.jar,然後將其添加到我的類路徑,我沒有任何問題。我只看到這個,如果我的.war項目包括日食中的.jar保護。 – 2014-10-01 22:59:51