1

@Overrideインターフェイスメソッドを実装するメソッドに注釈を付けてクラスファイルをコンパイルする際に興味深い問題が発生しました。

Eclipseでmoquetteプロジェクトをセットアップしようとしましたが、コンパイルエラーが発生しました

Description Resource    Path    Location    Type
The method decodable(IoSession, IoBuffer) of type PubAckDecoder must override a superclass method   PubAckDecoder.java  /moquette-parser/src/main/java/org/dna/mqtt/moquette/proto  line 22 Java Problem

Java 1.5準拠レベルが使用されているため、これは正しいようです。ただし、このプロジェクトはmavenで正常にビルドされています! それは私にとって奇妙です。

javac コンパイラに使用される次の引数ファイルがあります。

"-d"
"E:/workspaces/mqtt/moquette-mqtt/parser/target/classes"
"-classpath"
"E:/workspaces/mqtt/moquette-mqtt/parser/target/classes;e:/_mavenRepository/org/apache/mina/mina-core/2.0.4/mina-core-2.0.4.jar;e:/_mavenRepository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar;e:/_mavenRepository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar;e:/_mavenRepository/log4j/log4j/1.2.16/log4j-1.2.16.jar;"
"E:/workspaces/mqtt/moquette-mqtt/parser/src/main/java/org/dna/mqtt/moquette/proto/PubAckDecoder.java"
"-g"
"-nowarn"
"-target"
"1.5"
"-source"
"1.5"
"-encoding"
"UTF-8"

他のすべてのソース ファイルを削除しPubAckDecoder、エラーを含むファイルだけを残しました。

私は何が欠けていますか?なぜMavenで構築されるべきではないのですか?

UPD

コンパイラ プラグインの Maven 構成:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <fork>true</fork>
            <source>1.5</source>
            <target>1.5</target>
     </configuration>
</plugin>
4

2 に答える 2

0

この投稿を見つけました: http://kohsuke.org/2012/01/27/override-and-interface/ . Eclipse にエラーがあり、Maven が正常にビルドする理由を説明します。

于 2013-04-11T23:22:08.130 に答える