我的项目结构是这样的:Project 1: WebApplication (web项目的入口项目)
Project 2: FundationFramework (将所有可以重用的类提出来单独成为一个FW项目)其中Porject 1依赖Porject 2, 现在比如有一个类com.xxx.web.WebClass位于Project1中,它有一个数据成员是Project2的类:com.xxx.fw.MyException.以上结构在编译时都正常,但是我现在想在Project1中配置Spring,让Srping来维护类WebClass,此时Spring就会报错:
Caused by: java.lang.ClassNotFoundException: com.xxx.fw.MyException如果将MyException从Project2移到Project1中就一切正常,请问我应该如何配置Spring让它可以到Project2中去查找MyException呢?

解决方案 »

  1.   

    对了,我在applicationContext.xml中的配置片段如下:
    ....................
    <context:component-scan base-package="com.xxx.web" />  
    <context:component-scan base-package="com.xxx.fw" />.....................<bean id="webClass" class="com.xxx.web.WebClass">
    <property name="hibernateTemplate" ref="hibernateTemplate"></property>
    </bean>请问应该如何配置才能让Spring去Project2中去寻找需要的类com.xxx.fw.MyException?
      

  2.   

    找不到类唯一的可能就是你没有正确的引用p2的jar
    或者没有在buildpath中加入p2
      

  3.   

    Buildpath肯定已经加好了,在Exclips里编译没问题,而且如果不使用Spring初始化WebClass类的话,也不会出现任何问题。现在的问题是一旦使用Spring来初始化WebClass类,Spring就报错说找不到WebClass引用的MyException(看上去是因为MyException是位于另外一个工程中,而Spring死活找不到那个工程,尽管工程里的Buidpath配置正确)请问大家对这种情况如何解决啊!难道使用Spring之后就要求所有用到的类必须都位于同一个工程中它才可以找得到吗?
      

  4.   

    我可以肯定的是你的buildpath肯定没配对...
      

  5.   

    请问能具体说一下具体如何配吗?为什么我在Eclips里编译都没问题呢?以下是我的classpathProject1:
    -------------------------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="test"/>
    <classpathentry kind="src" path="resource"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
    <attributes>
    <attribute name="owner.project.facets" value="java"/>
    </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/>
    <classpathentry combineaccessrules="false" exported="true" kind="src" path="/FundationFramework"/>
    <classpathentry kind="output" path="webapp/WEB-INF/classes"/>
    </classpath>project2:
    ---------------------------------------------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    <classpathentry excluding="**/.svn/" kind="src" path="src"/>
    <classpathentry exported="true" kind="src" path="/ThirdParty"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="bin"/>
    </classpath>注:Project1和Project2位于同一级路径下,Project2的项目名称叫FundationFramework
    以上是两个工程的classpath在Eclips里没有任何错误,也可以在一起正确编译,就是Spring初始化时候找不到Project2里面的类!请大家帮看看,多谢了!
      

  6.   

    你还是不明白...
    一个单独的工程不能访问另一个单独的工程
    编译没错是因为你没引用另外的类...
    你要在主工程的buildpath里添加第二个工程的引用
      

  7.   

    请问能给一个例子吗?我担心你没有听懂我的问题。我已经在第一个工程的classpath中引入了第二个工程:
    <classpathentry combineaccessrules="false" exported="true" kind="src" path="/FundationFramework"/>注:第二个工程叫做FundationFramework,并且和第一个工程在同一级目录下。而且这样配置之后,在Eclipse中编译,是可以找到FundationFramework工程里面类的,一切正常。只是通过Spring创建实例时,Spring提示找不到FundationFramework下面的类。请耐心看明白我的命题所在,拜托了!
      

  8.   

    再描述一下我遇到的问题:有两个工程,Project1和Project2,Project1引用Project2,这些都已经在classpath中正确配置,并且在Eclipse中有Project1的类引用Project2类的情况也全部都可以正常编译通过。但是有一天,我突然决定原来Project1中的那个类用Spring去维护它,从此问题就来了,Spring报错说无法找到位于Project2中的那个类。我的问题是,我如何才能让Spring找到Project2中的那个被引用的类呢?拜托了!