У меня установлены jdk8 и 9. И в эффективном pom.xml я вижу, что плагин компилятора назначен на 1.8, однако mvn clean install выводит ошибку, что класс sun отсутствует, что заставляет меня поверить, что он по-прежнему использует jdk9.

$ mvn -version
Maven home: D:\Java\apache-maven-3.2.5
Java version: 9, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk-9

Pom.xml:

<plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.1</version>
        <executions>
          <execution>
            <id>default-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
              <encoding>UTF-8</encoding>
            </configuration>
          </execution>
          <execution>
            <id>default-testCompile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
              <encoding>UTF-8</encoding>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
0
Tiina 13 Ноя 2017 в 05:15

1 ответ

Лучший ответ

У вас крайний случай.

У вас (предположительно) есть код, изначально разработанный для Java 8 (или более ранней версии), который зависит от внутреннего класса JRE. Код не должен этого делать .

По-видимому, произошло то, что внутренний класс был удален или заменен.

Единственный способ скомпилировать этот код - загрузить и установить подлинный Java 8 JDK и настроить $PATH на обращение к нему перед запуском Maven.

Но это только временный промежуток. Реальное решение - преобразовать ваш код так, чтобы id не зависел от внутренних классов. В любом случае вам все равно придется это сделать. Так что можно сделать это сейчас ... и избежать хлопот, связанных со специальной настройкой Java 8 для сборки вашего кода.


Вы ничего не можете сделать со своим файлом POM, чтобы исправить это. Эти классы (вероятно) больше не присутствуют в файле "rt.jar", где их ищут компилятор java и среда выполнения.


Наконец-то я снова получил эту работу! После перезагрузки os.

Вероятно, произошло то, что вы изменили параметр PATH в файле ".rc", но не перезапустили оболочку и не повторно загрузили файл. Или что-то типа того. Вероятно, в перезагрузке не было необходимости. Выйти и снова войти в систему, вероятно, было бы достаточно.

0
Stephen C 13 Ноя 2017 в 03:32