Maven和Eclipse问题 - 寻找资源

3

我有一个问题,就是maven正在寻找Eclipse安装文件夹内的资源。

它显示的信息是:

This file was not found: file:/C:/eclipse/eclipse/src/main/resources/config/spring/applicationContext.xml

我的工作空间在c:/Work/Core/内,位于src/main/resources内。

有没有在pom.xml中进行配置,以便从其位置开始相对寻找?

编辑#1:

我正在从Eclipse运行Maven。 从命令行编译没有问题。

我正在尝试运行Junit测试。

编辑#2:

所有依赖项,web.xml等都没问题 - 我知道这一点,因为其他开发人员在Linux上使用Idea时使用了相同的文件,并且该项目可以正常工作。 使用我的项目设置,junit测试不起作用,编译wsdl文件也不起作用 - 这两个问题都是因为找不到资源。

编辑#3:

找到答案 - 在此处发布。


你是否为junit添加了依赖?你是否使用maven创建了Spring应用程序?还是它是一个maven或者java项目?最好的做法是选择Spring的archetype。请参考这个链接:http://docs.codehaus.org/display/MAVENUSER/Archetypes+List - ant
6个回答

6

知道了...终于...我不知道为什么,但Eclipse无法从Mavens刷新自己的设置。

我不得不改变.classpath:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </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="output" path="target/classes"/>
</classpath>

在第四行中,有一个excluding="**" - 我将其删除后,它就可以工作了。
此外,我还遇到了项目名称的问题。在pom.xml中是这样写的:
<groupId>core-maven</groupId>
<artifactId>core-maven</artifactId>

在构建标签<finalName>core-maven</finalName>中,我想将其更改为"core",但它没有起作用,直到我在.settings文件夹下的文件中找到并替换。


这个文件在哪里? - Robert
在根项目目录下,如果你有一个名为“Project”的项目,那么进入这个文件夹,你应该能看到它。它是“.settings”文件夹所在的同一文件夹。 - Trick

1

我们能否也看一下你的web.xml文件?使用Spring框架时,applicationContext.xml文件的位置通常在web.xml中定义,类似于:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>...</param-value>
</context-param>

(编辑:我知道使用maven编译不会涉及web.xml...但在运行jUnit测试时,这可能会影响-取决于如何设置测试。)

编辑2:从Linux环境切换到Windows环境时,我可能会看到指定东西所在位置的问题。仅因为它在一个环境下运行并不意味着在切换到另一个环境时就不会出现问题。如果您的Linux开发人员决定告诉Spring,applicationContext.xml位于/ usr / local / myide / myproject / src ...? Windows将无法正常工作。


我知道会有问题 :) 我找不到解决方案... 我只是认为,pom.xml 和 web.xml 没有问题。 - Trick
如果一个人试图在测试中初始化Spring WebApplicationContext,那么它确实与单元测试有关。Spring有专门的测试方法,例如SpringJUnit4ClassRunner.class。 - Quotidian

1

你的配置出了问题,需要进行一些清理并重新开始。

  • 清理你的工作空间:在文件系统中删除项目及其文件(当然,确保所有内容都已经在版本控制下),删除现有的"Maven Build"运行配置。
  • 将你的项目检出到文件系统的某个位置(不要放在工作空间中,这是一个不好的做法)。
  • 在Eclipse中导入它(导入... > Maven项目)。
  • 使用Maven运行你的测试。

P.S.:我假设你正在使用m2eclipse,但这远非显而易见,你应该提供清晰的上下文信息。


我猜这就是唯一的感觉...现在会尝试。 - Trick

1

我几周前也遇到了类似的问题。我改变了classpath以使其正常工作,但这并不是真正的解决方法,只是一个权宜之计,所以我对此并不满意。

过了一段时间,一位同事向我推荐了SpringSource Tool Suite (sts) http://www.springsource.com/products/sts

这是一个基于Eclipse的IDE,由SpringSource开发,具有更好的Maven支持。自从我使用了这个工具后,一切都很顺利。而且由于它是基于Eclipse的,我不需要学习全新的IDE,所有适用于Eclipse的东西都适用于STS。


在寻找解决方案的过程中,我也发现了这个集成开发环境。我计划在不久的将来进行测试。感谢提供信息! - Trick

0
你能把你在代码中或pom.xml相关部分尝试做的事情粘贴出来吗?
理想情况下,pom.xml中的任何目录引用都应该相对于pom.xml文件的位置。

-3
解决Eclipse中Maven问题的一个不错的方法是切换到Netbeans。它更易于使用,并且具有对Maven项目的本地支持。

哦...Netbeans...五六年前,它是一个非常糟糕的IDE...现在有没有变得更好呢?按照这种精神,我可以转向IDEA,因为我知道它在那里能够工作。 - Trick
1
据我所知,Netbeans自那时以来已经有了相当大的改进(特别是在性能方面)。它与Maven的良好集成是我从Eclipse转换到大多数项目的原因。 - Daniel
2
这不相关。问题是关于Eclipse的,应该作为这样回答。 - Bostone
从上面的评论来看,似乎楼主不同意你的观点 ;) - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接