Как запустить Java Модуль класса (java 9 Jigsaw Project) со сторонней библиотекой (JAR-файлы)? - PullRequest
0 голосов
/ 27 февраля 2020

Сейчас я пытаюсь разработать проект Java с чистым java (без buildtscript). Я реализую концепцию модуля из Java 9. У меня возникают проблемы при запуске проекта Java (основной класс) с дополнительным файлом JAR (сторонняя библиотека). У меня нет проблем при компиляции, но когда я пытаюсь запустить java, он не может работать должным образом.

Я могу скомпилировать этот проект, выполнив эту команду (javaFiles.txt содержит мои java файлы, которые хотел быть скомпилированным):

javac --module-path lib -d newout --module-source-path src @javaFiles.txt

Но когда я пытаюсь запустить скомпилированный файл .class с помощью этой команды:

java --module-path newout;libs --module com.example.trial/com.example.trial.CreateProduct

Я получил эту ошибку, как будто это неправильная команда:

$ java --module-path newout;libs --module com.example.trial/com.example.trial.CreateProduct
Usage: java [options] <mainclass> [args...]
       (to execute a class) or  java [options] -jar <jarfile> [args...]
       (to execute a jar file)
...

Я использую Ubuntu. Есть ли какой-нибудь другой способ сделать это?

А также я действительно не знаю различий между classpath, modulepath и чем бы то ни было. Я всегда пытаюсь запустить это из пути к модулю.

Я получил несколько ссылок от этой ссылки и этой ссылки . Эти двое говорят мне команду, которую я упомянул выше.

Спасибо!

1 Ответ

3 голосов
/ 27 февраля 2020

Разделитель пути во всех системах, отличных от Windows, - это двоеточие (:), а не точка с запятой (;). Вам нужно изменить это:

java --module-path newout;libs

на это:

java --module-path newout:libs

Unix оболочки используют ; для разделения двух последовательных команд. Итак, ваша первоначальная строка фактически пыталась выполнить эти две команды:

$ java --module-path newout
$ libs --module com.example.trial/com.example.trial.CreateProduct
...