Maven Eclipse Java错误类型的层次结构。。。不一致

Maven Eclipse Java错误类型的层次结构。。。不一致,java,eclipse,maven,Java,Eclipse,Maven,我读过类似的帖子,但我还没有找到任何解决方案 我正在Windows7上用EclipseJuno进行编辑 我从项目目录中包含两个构建错误的命令行运行了maven clean install war:inplace注意:Maven成功构建ProjectB。 我很确定这两条错误消息是直接相关的 错误 类型SomeClassB的层次结构不一致错误在SomeClassB上和 无法解析javax.servlet.servlet类型。它间接引用自SomeClassC 导入后,以下代码中的类声明行中出现两个错误

我读过类似的帖子,但我还没有找到任何解决方案

我正在Windows7上用EclipseJuno进行编辑

我从项目目录中包含两个构建错误的命令行运行了
maven clean install war:inplace
注意:Maven成功构建
ProjectB

我很确定这两条错误消息是直接相关的

错误

  • 类型SomeClassB的层次结构不一致
    错误在
    SomeClassB上
  • 无法解析javax.servlet.servlet类型。它间接引用自
    SomeClassC
  • 导入后,以下代码中的类声明行中出现两个错误:

    import foo.bar.one.a.base.SomeClassA;
    import foo.bar.two.b.property.PropertyX;
    
    public abstract class SomeClassB extends SomeClassC{
    
        public SomeClassB() {
            super();
        }
    
        @Override
        protected PropertyX getPropertyX() {
            return SomeClassA.getPropertyX(this.getPropName());
        }
    
        @Override
        protected String getPropName() {
            return SomeClassA.PROPERTY_NAME;
        }
    
    }
    
    需要注意的一些事项:

  • SomeClassC在另一个项目中定义。我将称之为
    ProjectC
  • 以上代码来自
    ProjectB
    ProjectB
    的pom.xml文件不包含对
    ProjectC
    的引用。见以下代码:
  • pom.xml

    编辑:添加所有依赖项

    <dependencies>
        <dependency>
            <groupId>com.ibm.ws</groupId>
            <artifactId>j2ee</artifactId>
            <version>7.0.0.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.ibm.wps</groupId>
            <artifactId>com.ibm.ws.portletcontainer</artifactId>
            <version>6.1.0.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.ibm.icu</groupId>
            <artifactId>icu4j</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.ibm.jsf</groupId>
            <artifactId>jsf</artifactId>
            <version>3.0.7</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.ibm.jsf</groupId>
            <artifactId>jsf-impl-messages</artifactId>
            <version>7.0.0.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.ibm.jsf</groupId>
            <artifactId>jsf-portletbridge</artifactId>
            <version>3.1.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.ibm.jsf</groupId>
            <artifactId>jsf-ibm</artifactId>
            <version>3.0.11</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
        <dependency>
            <groupId>foo.bar.one.c</groupId>
            <artifactId>foo1</artifactId>
            <version>1.2.3</version>
            <scope>provided</scope>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>foo.bar.one.c</groupId>
            <artifactId>foo2</artifactId>
            <version>${foovar2.version}</version>
        </dependency>
        <dependency>
            <groupId>foo.bar.one.c</groupId>
            <artifactId>PropertyX</artifactId>
            <version>${property.version}</version>
        </dependency>
        <dependency>
            <groupId>foo.bar.one.c</groupId>
            <artifactId>ProjectC</artifactId>
            <version>${varname.version}</version>
        </dependency>
        <dependency>
            <groupId>foo.bar.one.c</groupId>
            <artifactId>foo3</artifactId>
            <version>${foovar3.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>foo.bar.one.c</groupId>
            <artifactId>foo4</artifactId>
            <version>${foovar4.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
        <properties>
            ...
            <varname.version>5.2.85373</varname.version>
            ...
        </properties>
    
    
    com.ibm.ws
    j2ee
    7.0.0.5
    假如
    com.ibm.wps
    com.ibm.ws.portletcontainer
    6.1.0.2
    假如
    com.ibm.icu
    icu4j
    3.4.1
    com.ibm.jsf
    jsf
    3.0.7
    假如
    com.ibm.jsf
    jsf impl消息
    7.0.0.5
    假如
    com.ibm.jsf
    jsf portletbridge
    3.1.5
    假如
    com.ibm.jsf
    jsf-ibm
    3.0.11
    假如
    log4j
    log4j
    1.2.14
    foo.bar.one.c
    foo1
    1.2.3
    假如
    罐子
    foo.bar.one.c
    食物2
    ${foovar2.version}
    foo.bar.one.c
    财产x
    ${property.version}
    foo.bar.one.c
    项目C
    ${varname.version}
    foo.bar.one.c
    foo3
    ${foovar3.version}
    假如
    foo.bar.one.c
    foo4
    ${foovar4.version}
    假如
    javax.servlet
    servlet api
    2.5
    假如
    ...
    5.2.85373
    ...
    
    我已经确保
    ProjectC
    和类确实存在于我的文件系统中,并且它的路径是
    ProjectB
    的.classpath文件中的一个条目

    我尝试过的一种解决方法是将
    ProjectC
    导入eclipse,并将其添加到
    ProjectB
    的Java构建路径中。我不想这样做,因为这对我的团队来说是一种令人沮丧的做法


    如何解决此问题?

    提供此依赖关系

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    
    
    javax.servlet
    servlet api
    2.5
    假如
    
    从命令行运行Maven时会发生这种情况

    简而言之,Eclipse相信只有它自己才能更改
    target/classes/
    下的文件。如果从命令行运行Maven,它将更改相同的文件,Eclipse将非常混乱

    您有两个选择:

  • 使用Project->Clean再次构建所有内容

  • 对于从命令行生成的版本,而不是Maven


  • 我包括(我认为是)相关部分。。。您还需要更多吗?您的pom中是否有servlet api依赖项?请先尝试在下面提供您各自版本的依赖项。@Kalher我的pom中没有该依赖项。我不会提供整个pom,因为它非常庞大,我必须清理所有敏感数据。如果这是一个交易破坏者,请让我知道。这是一个问题的答案,这本身就是根据您提供的信息猜测出来的,所以当然问题是其他的。谢谢您的输入。但是:1。我已经打扫了(很多次)2。更改输出文件夹的后果是什么?