Как использовать файл манифеста.mf для указания правильного местоположения основного класса?

StackOverflow https://stackoverflow.com/questions/4401887

Вопрос

Кто-нибудь может мне с этим помочь?Я не смог найти ничего, что отвечало бы именно тому, что мне нужно.Все ответы, которые я нахожу, связаны с добавлением дополнительных библиотек в файлы манифеста, а не с чем-то еще.

Вот ситуация:

Я написал игру, используя NetBeans 6.9.Игра написана на Java.Всего около 80 классов.Все классы содержатся в пакете по умолчанию.Игра работает корректно.Я работаю над этим проектом около 18 месяцев и всегда сохраняю исполняемый код по мере разработки игры.

Что я сделал:

Мне нужно было импортировать что-то из статического класса, который я написал, в другой класс, над которым я работал.Для этого мне пришлось удалить все из пакета по умолчанию.Я использовал NetBeans, чтобы реорганизовать все в специальный пакет.

Что случилось:

Когда я выполняю «очистку и сборку», проект собирается успешно.Когда я запускаю основной проект, я получаю следующую ошибку:

java.lang.NoClassDefFoundError: WarMachine
Caused by: java.lang.ClassNotFoundException: WarMachine
...stack trace
Could not find the main class: WarMachine. Program will exit.

Я проверил файл .jar и вижу, что все скомпилированные файлы .class находятся там, включая основной класс (называемый WarMachine.class).Все файлы .class находятся в каталоге под названием Machine (это было имя пакета, в который NetBeans все реорганизовал).

Судя по тому, что мне удалось найти в Интернете, проблема в том, что мой файл манифеста.mf не указывает на правильное местоположение файла WarMachine.class.

Что должен сказать мой файл манифеста?Я не использую какие-либо другие библиотеки или что-то в этом роде.У меня 78 занятий, все они в пакете «Машина».Может кто-нибудь мне помочь?

Спасибо за ваше время!

Это было полезно?

Решение

Вы должны сообщить Netbeans, где находится основной файл класса.Щелкните правой кнопкой мыши свой проект, выберите «Свойства», затем перейдите к элементу дерева «Выполнить» слева.

Теперь справа у вас появится текстовое поле «Основной класс».Нажмите «Обзор» и выберите свой основной класс.Затем Netbeans должен исправить файл манифеста.

Run properties screenshot

Если вам интересно, ваш файл манифеста внутри файла .jar папки dist должен содержать такую ​​строку:

Main-Class: Machine.WarMachine

Кроме того, стандартной практикой считается использование строчных букв в именах пакетов.Вам следует позвонить в свой пакет machine.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top