Невозможно произвести жизнеспособный .jar с IntelliJ

1

Прежде всего, я не могу создать.jar с IntelliJ без использования артефактов, и я не понимаю, почему. Я делаю свой проект, создаю его, запускаю его, создаю модуль, но ни один из них не создает файл.jar из каталога... Может быть, причина в том, что я никогда не дождусь окончания конца и всегда прерываю с помощью alt + F2, потому что программа очень длинна для запуска целиком, это бот.

Поэтому я пытаюсь создать.jar, используя функцию Artifact в IntelliJ, но он создает.jar, который я не могу запустить:

-java prgr.jar возвращает Error: Could not find or load main class prgr.jar и -java -jar prgr.jar возвращает no main manifest attribute, in prgr.jar

Поэтому у меня появилось несколько вопросов, учитывая, что моя программа отлично работает, когда я запускаю основной класс из IntelliJ:

  1. В чем разница между командами: -java prgr.jar и -java -jar prgr.jar

  2. Что такое MANIFEST.MF и как его использовать?

  3. Как сделать, чтобы создать.jar, который я могу запустить из оболочки? Как правильно использовать функцию артефакта, какие файлы я должен поставить и где, чтобы заставить его работать?

Изменить: я только что увидел, что мне нужен MANIFEST.MF, но как я могу сообщить.jar, где найти МАНИФЕСТ?

  • 0
    Пожалуйста, прочитайте, как спросить
  • 0
    Если вы посмотрите на артефакт в «Структуре проекта», там будет запись «Главный класс».
Показать ещё 2 комментария
Теги:
maven
intellij-idea
jar
compilation

2 ответа

1

Если вы включите какие-либо подписанные JAR в ваше приложение, а затем используйте IntelliJ для сборки артефактов, он будет извлекать JARS и связывать их с вашим скомпилированным выводом.

Это приводит к исключению безопасности JAVA. Я видел это с Eclipse Paho и Bouncy Castle, которые подписаны.

Вы можете проверить, подписан ли какой-либо из JAR-библиотек библиотеки, используя инструмент jarsigner.

jarsigner -verify -verbose  <path to library JAR>

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

Изображение 174551

Попробуйте создать фиктивный проект только с Main. Добавьте 1 библиотеку JAR (которую вы пытаетесь построить вместе) за раз. Каждый раз создавайте выходной JAR до разрыва Main. Вот как я это нашел.

IntelliJ должен предупредить вас.....

1

Я, наконец, смог решить свою проблему благодаря этой теме. Wrong Manifest.mf в IntelliJ IDEA создал.jar самый верный ответ. Я считаю, что ошибка в IntelliJ должна быть исправлена: когда MANIFEST.MF находится в main/java вместо /main/ressources он не включен в окончательный.jar, что означает, что.jar содержит только выражение к внешним библиотекам, но не к манифесту, указывающему, что является основным классом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню