Может ли проект Java 9+ использовать отдельный исходный модуль в Java 8 без изменений? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть проект с Maven и Java 11, в котором используется внешняя библиотека, написанная на Java 8. Он отлично работает, пока библиотека импортируется как файл Jar. Я использую IntelliJ, но ищу ответы, которые подходят и для Eclipse.

Я также клонировал внешний репозиторий из GitHub и хочу использовать его в исходной форме в моем проекте. Одна из целей - внести улучшения во внешнюю библиотеку и иметь возможность отправлять запросы на вытягивание по ней в GitHub. Но сначала я хочу, чтобы вызовы из моего проекта в библиотеку работали, ничего не меняя в исходном коде библиотеки.

Однако класс в моем проекте, который импортирует классы из внешней библиотеки, не может этого сделать.

В pom. xml, я пробовал с

    <modules>
        <module>../path/to/external-libary</module>
    </modules>

, и это, кажется, имеет какой-то эффект, но все же импорт не работает.

Когда библиотека используется как Jar, эта зависимость работает:

       <dependency>
            <groupId>com.github.goxr3plus</groupId>
            <artifactId>java-stream-player</artifactId>
            <version>10.0.0</version>
        </dependency>

Я подозреваю, что я должен что-то сделать либо в модуле-info. java, либо в pom. xml, но я не могу понять, что .

1 Ответ

0 голосов
/ 09 мая 2020

Если внешняя библиотека должна рассматриваться как automati c module (на которую ссылаются через 'requires' в вашей информации о модуле, а не на втягивание в путь к классам), тогда зависимость должен указывать на файл jar , потому что модули automati c определены только для файлов jar.

Eclipse немного смещает ограничение, распознавая также проекты на пути к модулю как автоматические c модули, которые по-прежнему требуют дополнительных действий при запуске, потому что среда выполнения Java не примет папку с файлами классов как автоматический c модуль.

...