eclipse中的Maven java项目没有在同一个包中看到类

时间:2012-05-16 09:38:50

标签: java eclipse maven

我刚刚开始使用maven来尝试构建一个多模块项目。

除了2个小问题外,一切都会好的。

使用eclipse向导创建一个新的maven项目'simple J2EE'原型由于eclipse中的错误而失败,因此在查找原型时它忽略了代理设置(https://bugs.eclipse.org/bugs/show_bug的CGI?ID = 348893)

解决方案是在命令行上创建我的项目,然后将生成的文件结构复制到我工作区内的“简单maven”项目中 - 导入项目也失败了!

我真正的问题是以下

当我点击项目文件夹并“创建一个新的java类”时,它将该类放在错误的位置,根据它应该在maven架构中的位置(我选择了错误的选项吗?)。所以我动了它。

所以现在我创建了第二个类,它将第一个类作为成员。这两个类显然位于同一个包名称空间中。但我无法从第二个看到成员类的任何方法。

我猜我在我的POM或我的结构中做错了什么。

但我不知道什么,也不知道你可能需要什么信息来帮助我解决它。

现在我已经恢复在eclipse中创建我的子模块作为一个单独的包,使用ANT和各种eclipse工具指向所需的库等等。然后当我完成测试时,我将项目转换为'maven '项目。在我完成此操作后,我的父POM和子POM都在eclipse中验证了OK。但是,如果我决定扩展功能并在我的模块中添加一个新类,那么类文件最终会在错误的位置结束,我无法从中看到我的其他类(或者从它们这个新类)。

请帮忙。我喜欢Maven的想法,并用它来控制我的依赖关系,顺便说一下我要去ANT,也许可以学习IVY用于依赖控制(尽管我对所有人都有点闷闷不乐让maven发挥作用的斗争只是把它扔掉!)

我是否应该坚持使用ANT / IVY并忘记maven,但是为了将来保持maven目录结构?

编辑。

所以我可能错过了一些东西......我只是再次尝试在eclipse中创建一个简单的maven项目,这次我没有选择原型。 我把新的'模块'放在父文件夹下面。这不是我一直在做的事情,我在与父母相同的级别创建了一个外部模块的数量。我从父母的有效POM(我的测试模块)中注意到它有一个部分和其他标签。我可以通过将其添加到我的单个模块POM来解决我的问题吗?

3 个答案:

答案 0 :(得分:18)

这是Eclipse / Maven奇怪的结果,似乎随机发生。解决:

右键单击该项目并选择Maven>更新项目......

答案 1 :(得分:4)

查看你的.classpath。 验证源文件夹和目标是eclipse期望它们的位置。

一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

答案 2 :(得分:0)

也许你的.project文件中有这样的配置:

<buildSpec>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.wst.common.project.facet.core.builder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.springframework.ide.eclipse.core.springbuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.wst.validation.validationbuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>

为此配置(或其中一个项目)更改它:

<buildCommand>
        <name>org.eclipse.wst.common.project.facet.core.builder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.springframework.ide.eclipse.core.springbuilder</name>
        <arguments>
        </arguments>
    </buildCommand>