Java 从src/main和src/test运行时的类路径差异

Java 从src/main和src/test运行时的类路径差异,java,eclipse,gradle,jersey,Java,Eclipse,Gradle,Jersey,我有两个项目,项目1依赖于项目2 project-1 src/main/resources src/test/resources src/functional-test/resources project-2 src/main/resources/ src/test/resources Project-1与Project-2具有项目依赖关系 Project-1是一个web应用程序,当

我有两个项目,项目1依赖于项目2

project-1  
           src/main/resources
           src/test/resources
           src/functional-test/resources

project-2
          src/main/resources/
          src/test/resources
Project-1与Project-2具有项目依赖关系

Project-1是一个web应用程序,当我启动tomcat时,它会从类路径中找到applicationContext.xml并加载Springbeans

如果我启动tomcat服务器并通过浏览器点击服务,一切正常,但当我运行jersey tests时,应用程序上下文不会加载。 当我运行tomcat时,它会在Project-1的src/main/resources/中查找应用程序上下文并加载bean Project-1 applicationContext.xml引用Project-2 src/main/resources/中使用Project-2中属性文件的xml

当我将Project-1src/main/resources的内容复制到Project-1src/test/resources中,并对Project-2执行相同的操作时,此问题已修复。 现在我在创建名为“emf”的bean时出错 Project-2中的xml文件包含

    <bean id="emf" 
  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

          < bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        ...
        ...
     </bean>

在启动tomcat时,它怎么可能在类路径上,在这种情况下,入口点是src/main/java/ 在src/test/java中运行JerseyTest时,它不在类路径中

(如果在正常运行期间有testCompile依赖项不可用,则可能是另一种情况)
类路径是Jvm的一部分。src/main或src/test与之有什么关系?有没有办法修改Junit类路径(仅限于Jvm)以包含从src/main运行vm时的内容?

尝试显式创建应用程序上下文,并将其设置为属性
“contextConfig”
,与ResourceConfig类似,但是改用
ClassPathXmlApplicationContext
(因为您使用的是xml)@peeskillet真棒。尽管还有两个问题我不得不通过其中一个项目删除不必要的spring asm依赖项,但我认为这不是jersey spring兼容性问题,而是构建路径中存在的spring 3.1.2的问题。我还必须提供javax.el-api依赖项。不确定为什么在运行tomcat和rest服务时不需要这样做,但只有在运行测试时才需要这样做。虽然我将xml和属性文件放在各自项目的src/test中,因为它们在从gradle运行时不在类路径中。可能有办法做到这一点,但我是仍在查看项目层次结构和许多gradle文件。这对我来说已经足够好了,因为我可以指定要从Test加载的文件尝试显式创建应用程序上下文并将其设置为属性
“contextConfig”
,使用ResourceConfig,有点像所看到的,但改用
ClassPathXmlApplicationContext
(因为您使用的是xml)@peeskillet真棒!虽然还有两个问题我不得不通过其中一个项目删除不必要的spring asm依赖项,但这仍然有效。我认为这不是一个jersey spring兼容性问题,而是构建路径中存在的spring 3.1.2的问题。我还必须提供javax.el-api依赖项。我不确定为什么在运行tomcat并点击rest服务,但仅在运行测试时。虽然我将xml和属性文件放在各自项目的src/test中,因为它们在从gradle运行时不在类路径中。可能有办法做到这一点,但我仍在研究项目层次结构和许多gradle文件。这对于我可以指定从测试加载的文件