Плагин Maven AspectJ не может быть собран с Java 9 из-за отсутствия tools.jar

Я переключил свою версию JDK с 8 на 9, и плагин AspectJ больше не работает из-за отсутствия tools.jar:

Выполнение по умолчанию для цели org.codehaus.mojo: aspectj-maven-plugin: 1.10: ошибка компиляции: плагин org.codehaus.mojo: aspectj-maven-plugin: 1.10 или одна из его зависимостей не может быть разрешена: не удалось найти артефакт com.sun: tools: jar: 9.0.1 по указанному пути C: \ Program Files \ Java \ jdk-9.0.1 /../ lib / tools.jar

Я понимаю, что tools.jar (и rt.jar) были удалены из Java 9 JDK. Мне интересно, есть ли способ заставить плагин Maven AspectJ работать с Java 9 без tools.jar?

Вот мое определение плагина с информацией о версии:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>aspectj-maven-plugin</artifactId>
      <version>1.10</version>
      <configuration>       
      <encoding>${project.build.sourceEncoding}</encoding>
      <complianceLevel>1.9</complianceLevel>
      <showWeaveInfo>true</showWeaveInfo>
      <XnoInline>true</XnoInline>         
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>compile</goal>
              <goal>test-compile</goal>
          </goals>
        </execution>
      </executions>     
      <dependencies>
       <dependency>
       <groupId>org.aspectj</groupId>
       <artifactId>aspectjrt</artifactId>
       <version>1.9.0.RC2</version>
      </dependency> 
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjtools</artifactId>
        <version>1.9.0.RC2</version>
       </dependency>          
      </dependencies>
    </plugin>

person MrkK    schedule 09.01.2018    source источник


Ответы (4)


Пока версия 1.11.1 не будет выпущена в Maven Central org.codehaus.mojo, используйте сборку моментального снимка вместо этого:

<groupId>com.github.m50d</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.11.1</version>
person izogfif    schedule 11.09.2018
comment
как это до сих пор не исправлено? ??? - person Enerccio; 15.07.2021
comment
@Enerccio на самом деле было исправлено в 2021-05 гг. -30, но по состоянию на 16.07.2021 исправление еще не выпущено. - person izogfif; 16.07.2021

Я только что нашел уродливую уловку, позволяющую заставить аспектj работать с Java 9, просто укажите com.sun: tools на pom.xml, и компилятор просто запустится.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.11</version>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <complianceLevel>1.8</complianceLevel>
                <encoding>UTF-8</encoding>
                <verbose>true</verbose>
                <weaveDependencies>
                    <weaveDependency>
                        <groupId>io.grpc</groupId>
                        <artifactId>grpc-netty</artifactId>
                    </weaveDependency>
                </weaveDependencies>
                <showWeaveInfo>true</showWeaveInfo>
                <XnoInline>true</XnoInline>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tools</artifactId>
            <version>${java.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/pom.xml</systemPath>
        </dependency>
    </dependencies>
</plugin>
person James Pan    schedule 25.03.2018
comment
Вау, как ты это узнал? У меня это сработало с JDK 12. - person Constantino Cronemberger; 17.06.2020
comment
Спасибо, работает с JDK 9. Было бы неплохо, если будет поддержка от mojo и нам этот хакер не понадобится :-) - person Jan Hornych; 12.10.2020

Возникла та же проблема, проблема в том, что эта транзитивная зависимость активна по умолчанию в аспектеj-maven-plugin.

Исправлено для меня с этим PR https://github.com/mojohaus/aspectj-maven-plugin/pull/35

person megglos    schedule 03.02.2018

Вы проверили последнюю версию плагина?

<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.11</version>
person Marek Raki    schedule 18.01.2018
comment
Та же проблема с версией 1.11: выполнение по умолчанию цели org.codehaus.mojo: aspectj-maven-plugin: 1.11: сбой компиляции: плагин org.codehaus.mojo: aspectj-maven-plugin: 1.11 или одна из его зависимостей не может быть разрешена : Не удалось найти артефакт com.sun: tools: jar: 9.0.4 по указанному пути C: \ Program Files \ Java \ jdk-9.0.4 /../ lib / tools.jar - person MrkK; 24.01.2018
comment
@MrkK, см. ответ от izogfif. Это сработало для меня, используя Java 10.0.2, имеющую ту же проблему, что и вы. - person Ivo Mori; 12.09.2018