Скажите IntelliJIdea использовать определенную версию JDK, а не только JDK8, но jdk-8u201 - PullRequest
0 голосов
/ 04 апреля 2019

После переключения на JDK8 атрибуты MANIFEST.MF начали возвращаться null
https://bugs.openjdk.java.net/browse/JDK-8201636 предполагает, что это ошибка, введенная Oracle в JDK 8u151-8u172.

Я использую pom.xml и IntelliJ IDEA. pom.xml указывает (теги < и > удалены)

<maven.compiler.target> 1.8 </maven.compiler.target>
<maven.compiler.source> 1.8 </maven.compiler.source>

Настройки IDEA показывают target bytecode version 1.8
JAVA_HOME установлено в JDK10
У меня установлена ​​C:\Program Files\Java\jdk1.8.0_201.

Как указать эту версию для сборок. Также pom.xml превосходит настройки проекта IDEA или наоборот?


Edit:
Я указал

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <verbose>true</verbose>
                <fork>true</fork>
                <!--executable>{JAVA_1_8_HOME}/bin/javac</executable-->
                <executable>C:/Program Files/Java/jdk1.8.0_201/bin/javac</executable>
                <compilerVersion>1.8</compilerVersion>
            </configuration>
        </plugin>

Intellij по умолчанию по-прежнему JDK 1.5 и включается List<String> a = new ArrayList<>(); с "Я не понимаю <> с JDK1.5".

1 Ответ

0 голосов
/ 04 апреля 2019

maven.compiler.target и source не имеют к этому никакого отношения.Это всего лишь аргументы, переданные javac.

Если вы хотите явно указать версию javac, вы можете использовать плагин компилятора Maven .

<configuration>
  <verbose>true</verbose>
  <fork>true</fork>
  <executable><!-- path-to-javac --></executable>
  <compilerVersion>1.3</compilerVersion>
</configuration>

В противном случае будет использоваться javac из Project SDK (Структура проекта> Проект).

...