Я новичок в javapackager и Java 9 и работаю над примерами в javapackager, первый пример показан ниже:
Пример 1. Использование команды -createjar
javapackager -createjar -appclass package.ClassName -srcdir classes -outdir out -outfile outjar -v Packages the contents of the classes directory to outjar.jar, sets the application class to package.ClassName.
Я могу сделать файл jar (tcdmod.jar) без сообщений об ошибках. Но я получаю сообщение об ошибке, когда пытаюсь выполнить банку с помощью обычной команды:
java -jar tcdmod.jar
Ошибка: не удалось найти или загрузить модуль основного классаTCD.com.adonax.tanpura.TCDLaunch. Причина: java.lang.NoClassDefFoundError: com/adonax/tanpura/TCDLaunch (неправильное имя: moduleTCD/com/adonax/tanpura/TCDLaunch)
Команда, используемая для создания банки:
javapackager -createjar -appclass moduleTCD/com.adonax.tanpura.TCDLaunch
-srcdir compiled -outdir outex1 -outfile tcdmod -v
Папка для компиляции:
compiled/moduleTCD/com/adonax/tanpura/ [compiled classes here and below]
compiled/moduleTCD/module-info.class
Манифест в банке показывает:
Main-Class: moduleTCD/com.adonax.tanpura.TCDLaunch
Вещи, которые я пытался решить до сих пор:
Я не мог сказать из документации, правильно ли я указал параметр -appclass. Документация определяет -appclass следующим образом: «Полное имя класса приложения, которое должно быть выполнено». Но я не вижу никаких указаний на то, что подразумевается под «квалифицированным». Я попробовал несколько разных имен, которые показались правдоподобными. Форма с именем модуля, которую я использовал, верна?
Я создал второй «скомпилированный» каталог, в котором модуль был просто исключен из проекта, и повторил команду, используя ее для моего -srcdir. В этом случае полученный файл jar работал нормально.
Я проверил, что могу запустить программу из командной строки, используя скомпилированный источник (из «скомпилированной» папки):
джава -р . -m модульTCD/com.adonax.tanpura.TCDLaunch
Какие-нибудь мысли? Чтобы сделать автономный exe-пакет (основная цель), мне нужен файл jar на основе модуля, если я правильно читаю документацию.