Java 9 миграция на проблемы с модульной системой - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь перенести свой текущий проект, чтобы иметь возможность скомпилировать и запустить его на java 9. Сначала я пытаюсь просто переместить проект, основанный на java8, на java9 без особых усилий, что означает в принципе не переходить на работу с пазлом.

Структура проекта похожа на

myjava-service [myjava-service-parent] parent-pom with the following modules
 - myjava-service 
 - myjava-service-common
 - myjava-service-test

он отлично компилируется с пакетом mvn clean и запускается, когда я запускаю этот fat.jar

кошмар начинается, когда я пытаюсь запустить его с помощью intellij, чтобы запустить на intellij, мне нужно установить модуль, который я хочу выполнить, который является myjava-сервисом, но затем, по-видимому, intellij понимает его как модуль java 9 и хорошо разбивает проблемы с пакетами, классы не найдены и другие проблемы, которые я изо всех сил пытаюсь исправить, поэтому мой вопрос, есть ли способ запустить службу на intellij в среде java 9 без запуска новой системы модулей java каким-либо образом?

для записей, таких как

java.lang.module.ResolutionException: Modules javax.annotation.api and annotations export package javax.annotation to module javax.el

1 Ответ

0 голосов
/ 20 июня 2018

Итак, по-видимому, кто-то столкнулся с той же проблемой, с которой я столкнулся, поэтому происходит то, что когда ваша служба запускается из класса, который не является частью ваших источников (в моем случае моя служба запускается из класса Starter из Vertx) jar), тогда IDEA использует путь к модулю вместо пути к классу. к счастью, команда Intellij была очень полезна, проследи за билетом

https://youtrack.jetbrains.com/issue/IDEA-187390, для следующей версии IDEA воздержится от использования пути к модулю, если в источниках нет файла информации о модуле.

Также для тех, кому нужно отчаянно запустить сервис в java 9, есть обходной путь, который заключается в создании класса Main и вызове его внутри класса, запускающего ваш сервис, в моем случае это выглядело как

public class Start {

    public static void main(String[] args) {
        Starter.main(args);
    }
}
...