Создание Fat Jars: что такое папка mods?

#javafx #javafx-11

#javafx #javafx-11

Вопрос:

Я просто на:

https://openjfx.io/openjfx-docs/#modular

пытаюсь создать jar, который я могу запускать на других системах (в которых нет библиотек javafx, как это произошло бы с пользователем-непрофессионалом, не являющимся разработчиком), и они сказали мне использовать это:

 dir /s /b src*.java > sources.txt amp; javac --module-path %PATH_TO_FX% -d mods/hellofx @sources.txt amp; del sources.txt
  

Что такое mods/
Где это должно быть? Они говорят о out / ?

Ответ №1:

Документ, на который вы ссылаетесь, относится к этому образцу.

Если вы клонируете образец и следуете инструкциям о том, как скомпилировать и запустить проект, первую команду можно разделить на три части:

 dir /s /b src*.java > sources.txt amp; 
javac --module-path %PATH_TO_FX% -d mods/hellofx @sources.txt amp; 
del sources.txt
  

Первая часть просто получает все Java-файлы по пути src и добавляет их в sources.txt файл:

 C:pathtohellofxsrcmodule-info.java
C:pathtohellofxsrchellofxHelloFX.java
  

Вторая часть вызывает javac команду (см. ссылку) для компиляции содержимого sources.txt , добавляя необходимую --module-path опцию для включения модулей JavaFX, а также добавляя опцию вывода или назначения -d :

-общий каталог

Задает каталог назначения для файлов класса. Если класс является частью пакета, то javac помещает файл класса в подкаталог, который отражает имя пакета, и создает каталоги по мере необходимости.

Это означает, что мы собираемся скомпилировать hellofx.HelloFX.java в каталог mods/hellofx , в результате чего:

 C:pathtohellofxmodshellofxmodule-info.class
C:pathtohellofxmodshellofxhellofxHelloFX.class
  

На третьем шаге просто удалится sources.txt файл.

И теперь вы можете запустить свой модуль:

 java --module-path "%PATH_TO_FX%;mods" -m hellofx/hellofx.HelloFX
  

Вы, конечно, можете указать любой каталог для вывода, чтобы, например, изменить его на out или build , но затем убедитесь, что вы соответствующим образом изменили его в остальных инструкциях.