4

ロギング レイヤーで気の利いた遅延ロギング トリックを使用しようとしていますが、AspectJ がそれを詰まらせています。log4j の前にファサードがあります。コードは次のとおりです。

public void debug ( Supplier<String> message )
{
    if( isDebugEnabled() )
    {
        debug( message.get() );
    }
}

エラー:

[ERROR] The type java.util.function.Supplier cannot be resolved. It is indirectly referenced from required .class files
        /home/Build/src/Core/Database/src/com/BasicDao.java:1006
LOGGER.debug( "Retry number: "+retryCount+"DB Lock Conflict, sleeping "+retrySleepTime );

これが私のポンビットです:

<plugin>
    <!-- This plugin integrates aspectj into our build cycle -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.7</version>
    <configuration>
        <complianceLevel>1.8</complianceLevel>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>1.8.5</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <phase>process-sources</phase>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
         </execution>
    </executions>
</plugin>

と:

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.5</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.5</version>
        </dependency>

その他の興味深い事実として、これは Eclipse 内では正常にコンパイルされますがmvn package、Linux コマンド ラインから実行するとこのエラーが発生します。

さらに試行錯誤を重ねた結果JAVA_HOME、Java 8 を指すように手動で設定すると、コンパイルされることがわかりました。AspectJ ではJAVA_HOME、適切なバージョンの Java を指定する必要があるようです。メインの pom では、Maven に特定のバージョンの Java を使用するように指示しています。

<executable>${JAVA_1_8_HOME}/bin/javac</executable>
<jvm>${JAVA_1_8_HOME}/jre/bin/java</jvm>

いずれも、aspectj-maven-plugin 構成では機能しないようです。

4

0 に答える 0