Хорошо, я проведу вас через процесс, который я прошел, чтобы проанализировать проблему:
- Я взял тебе банку и попытался запустить ее через
java -jar pms.jar
. Действительно, это не удалось с вышеупомянутыми сообщениями об ошибках.
- Я создал в вашем пакете быстрый тестовый класс, который просто печатает сообщение в system.out и помещает его в файл jar в папке
net.pms
.
- Я вручную изменил атрибут
Main-Class
в Манифесте, чтобы вызвать этот класс (таким образом: net.pms.Test
).
- Я перезапустил
java -jar pms.jar
и получил те же сообщения об ошибках.
- Я удалил все дополнительные папки из корня фляги и перезапустил
java -jar pms.jar
. Он выдал те же сообщения об ошибках.
- Я удалил все дополнительные папки из
META-INF
и перезапустил java -jar pms.jar
. Он по-прежнему выдавал те же сообщения об ошибках.
- Я удалил все дополнительные файлы из
META-INF
и повторно запустил java -jar pms.jar
. Приложение работало нормально.
- Я начал со свежей копии банки, удалил только все дополнительные файлы из
META-INF
и перезапустил java -jar pms.jar
. Приложение работало нормально.
- Я начал со свежей копии фляги и один за другим я удалил дополнительные файлы из
META-INF
, повторно запустив java -jar pms.jar
, когда я пошел дальше. Это дало мне следующие результаты:
Если в каталоге META-INF
содержится один из файлов NB_IDE.DSA
или NB_IDE.SF
, Java не может найти основной класс вашего приложения. Похоже, что информация в этих файлах каким-то образом влияет на механизм определения местоположения загрузчика классов.
Я посмотрел на файлы, и кажется, что это какой-то специфический информационный файл Netbeans. Google действительно не дал мне никаких результатов по этому поводу, и моя сеть коллег не имела никаких подсказок по этому поводу. На этом этапе я обычно обращаюсь к StackOverflow за помощью, но, учитывая, что файлы касаются только информации о зависимостях Netbeans, я предполагаю, что файлы используются только в вашей IDE. Кроме того, поскольку эта информация необходима во время сборки, а не во время выполнения, я предполагаю, что безопасно удалить файлы из окончательной версии.
Все, что вам нужно сделать сейчас, это исключить файлы из окончательной сборки через ваш build.xml
. Я оставлю это на ваше усмотрение, так как в Интернете много документации по Ant. :)
Теперь, почему я так подробно рассказал об этом?
Ну, это типичный процесс, которому я следую, если сталкиваюсь с такой проблемой. Во-первых, я исключаю все мешающие параметры, чтобы точно определить проблему. Затем я анализирую результат - возможно, используя Интернет, чтобы прояснить моменты, с которыми я не знаком, - чтобы устранить не симптомы, а причину. Тогда я устраню причину.
Лично я считаю, что этот процесс является отличным инструментом в каждом наборе инструментов для разработчиков, чтобы быстро решать проблемы, подобные той, с которой вы столкнулись. Я надеюсь, что вы сможете использовать его когда-нибудь в будущем, и вам не придется ждать дни и дни, пока моя ленивая задница наконец-то взглянет на это. :)
Удачи в вашем программном обеспечении!