Как я могу использовать manifest.mf, чтобы содержать правильное местоположение основного класса? - PullRequest
0 голосов
/ 09 декабря 2010

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

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

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

Что я сделал:

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 09 декабря 2010

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

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

Run properties screenshot

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

Main-Class: Machine.WarMachine

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

...