9

Java 7を使用するためのaspectjプラグインの適切な構成/バージョン/プラグインのバージョンは何ですか?

Java6からJava7にアップグレードしようとしていますが、aspectjコンパイラがJava 7をコンパイルしていないようです。aspectjプラグインとmavenコンパイラプラグインのプラグイン構成で、Javaのソースとターゲットのバージョンを1.7として指定しています。コードにJava7固有の構文を導入し、switchの文字列やdiamond演算子などのいくつかの言語機能を追加しました。ビルド中に、java7構文に関するaspectjからエラーが発生します。物事がうまくいかないことの最初の兆候は次のとおりです。

[INFO] --- aspectj-maven-plugin:1.4:compile (default) @ site ---
[ERROR] Cannot switch on a value of type String. Only int values or enum constants are permitted
[ERROR] Cannot instantiate the type HashSet<?>
[ERROR] Syntax error on token "<", ? expected after this token

実行セクションをaspectjmavenプラグインから削除して実行されないようにし、mvn clean installを使用すると、新しいコードは正常にコンパイルされます。だから私はそれがaspectjで誤って構成されたものだと思います。これが私のプラグイン構成です:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java-version>1.7</java-version>
    <org.aspectj-version>1.6.11</org.aspectj-version>
</properties>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.4</version>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjrt</artifactId>
                    <version>${org.aspectj-version}</version>
                </dependency>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjtools</artifactId>
                    <version>${org.aspectj-version}</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <complianceLevel>${java-version}</complianceLevel>
                <encoding>${project.build.sourceEncoding}</encoding>
                <outxml>true</outxml>
                <source>${java-version}</source>
                <target>${java-version}</target>
            </configuration>
        </plugin>

また、aspectjrtは、プラグインセクション外の依存関係として定義されています

<dependencies>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${org.aspectj-version}</version>
    </dependency>
<dependencies>
4

1 に答える 1

8

1.6.11から1.7.0にアップデートしました。これは、この質問をしてからリリースされました。私はもうaspectj/Java1.7の問題を抱えていないので、この質問は解決します。

于 2012-07-26T21:11:51.693 に答える