Как использовать файл манифеста.mf для указания правильного местоположения основного класса?
-
25-09-2019 - |
Вопрос
Кто-нибудь может мне с этим помочь?Я не смог найти ничего, что отвечало бы именно тому, что мне нужно.Все ответы, которые я нахожу, связаны с добавлением дополнительных библиотек в файлы манифеста, а не с чем-то еще.
Вот ситуация:
Я написал игру, используя 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 должен исправить файл манифеста.
Если вам интересно, ваш файл манифеста внутри файла .jar папки dist должен содержать такую строку:
Main-Class: Machine.WarMachine
Кроме того, стандартной практикой считается использование строчных букв в именах пакетов.Вам следует позвонить в свой пакет machine
.