Jar Manifest help: не удалось найти или загрузить основной класс - PullRequest
0 голосов
/ 16 ноября 2018

Попытка создать исполняемый файл JAR - но я не могу получить правильный манифест

файл манифеста "tdms.mf"

Manifest-Version: 1.0
Main-Class: rackserials.tdms

Создание баночки

jar cfvm rackserials.jar tdms.mf  *.class assetdata.xlsx
added manifest
adding: Asset.class(in = 10946) (out= 3918)(deflated 64%)
adding: TDMSConnection.class(in = 2599) (out= 1372)(deflated 47%)
adding: tdms.class(in = 13402) (out= 6732)(deflated 49%)
adding: assetdata.xlsx(in = 23998) (out= 20987)(deflated 12%)

Выполнение этой команды из каталога, которое называется «tdms»:

Asset.class
TDMSConnection.class
tdms.class **where my main is located**
tdms.mf
assetdata.xlsx

CLI

java -jar rackserials.jar 
Error: Could not find or load main class rackserials.tdms

1 Ответ

0 голосов
/ 17 ноября 2018

Структура каталога внутри JAR-файла должна соответствовать структуре пакета ваших классов, а для атрибута Main-Class должно быть указано полное имя класса, содержащего метод public static void main(String[] args), который является точкой входаваше приложение.

Есть ли в вашем классе rackserials?Тогда файлы *.class внутри файла JAR должны находиться в каталоге с именем rackserials, а не в корневом каталоге файла JAR.

Вы можете просмотреть содержимое файла JAR с помощью jar tvf rackserials.jar,Это должно выглядеть следующим образом:

META-INF/MANIFEST.MF
rackserials/tdms.class
(whatever other files)

См. Упаковка программ в JAR-файлах в Oracle Tutorials для всех деталей создания файлов JAR и работы с файлами манифеста для создания исполняемого JAR.

...