Переходим на Java 10: проблемы и решения
Итак, прошел уже месяц с выхода Java 10. Уже даже успел подойти первый апдейт. А это значит — пора переходить и нам :) Вслед за переходом на Java 9.
Установка
Джаву, как всегда, можно скачать и установить вручную. Но это не мой путь. Я обычно предпочитаю устанавливать из готовых пакетов (которые, к сожалению, выходят месяц-два спустя). Например, так:
sudo add-apt-repository ppa:linuxuprising/java sudo apt-get update sudo apt-get install oracle-java10-installer
Проблема с IntelliJ IDEA
Первая проблема, с которой я столкнулся, была в IDE. Я сидел на IntelliJ IDEA 2017.3. И при добавлении JDK 10 в проект идея отказывалась признавать корневую директорию JDK как «The selected directory is not a valid home for JDK». Проблема легко решается переходом на 2018.1.2. Но должен предупредить — в новой версии идеи довольно много неприятных мелких багов. Надеюсь, ситуация в Эклипсе получше.
Проблема с maven-compiler-plugin
Первым делом после подключения JDK 10 я попробовал собрать проект мавеном. Не получилось:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project push: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile failed.: IllegalArgumentException -> [Help 1]</em>
Гуглинг помог быстро найти проблему, а именно в maven-compiler-plugin. Как оказалось, этот плагин использует внутри старую версию библиотеки asm, которая не поддерживает Java 10. К счастью, ее легко можно пофиксить, изменив зависимость в плагине:
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>3.7.0</version>
   <configuration>
       <source>10</source>
       <target>10</target>
   </configuration>
   <dependencies>
       <dependency>
           <groupId>org.ow2.asm</groupId>
           <artifactId>asm</artifactId>
           <version>6.1.1</version>
       </dependency>
   </dependencies>
</plugin>
Проблема с maven-surefire-plugin
Проект собрался. Настало время билда с тестами. И опять получился нежданчик. Теперь уже в maven-surefire-plugin:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on project Blynk: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test failed.: NullPointerException
Я особо не искал причину, а по опыту переезда на девятку — просто проапдейтил плагин к последней версии 2.21.0, что и решило проблему.
Опять IDE
Сборка с тестами прошла успешно, и ничего не отвалилось, что уже довольно неплохо (в отличие от девятки). Теперь я попробовал запустить тесты из идеи. И получил довольно странную ошибку:
Release version 11 not supported
Выяснилось вот что. Во-первых, «Language Level» в модулях проекта оказался на Level 11. Во-вторых, настройка «Module JDK» в каждом из модулей была на 
Travis CI
Так как наш проект open-source, мы используем бесплатный и публичный Travis Cloud для прогонки тестов. 
Travis.yml:language: java
before_install:
 - wget https://github.com/sormuras/bach/raw/master/install-jdk.sh
matrix:
 include:
     - env: JDK='OpenJDK 10'
       install: . ./install-jdk.sh -F 10 -L GPL</em>
Lombok
Если вы используете или собираетесь использовать библиотеку Lombok в вашем проекте, то с десяткой придется подождать. Так как Lombok fails with JDK 10. Хотя, с другой стороны — это отличный повод выпилить его из вашего проекта.
P. S. 

Я уже перевел часть кода на var. Пока хорошо. Вот, например, кусок кода, который мне нравится больше всего:

А вы уже попробовали Java 10?
Для тех, кто же все-таки решил перейти на 
