Я пытаюсь упаковать проект с использованием библиотек OptaPlanner 6.0.1 в .jar через артефакт jar IntelliJ IDEA, но вместо моего manifest.mf, содержащего стандартный
Manifest-Version: 1.0
Main-Class: a.b.c.app
jar использует тот, который поставляется в ecj-3.7.2.jar, одной из поддерживающих библиотек OptaPlanner:
Manifest-Version: 1.0
Build-Jdk: 1.6.0_26
Built-By: ibrandt
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Из-за этого "no main manifest attribute, in appname.jar"
при попытке запустить приложение возникает ошибка. Если я вручную заменю манифест в файле .jar своим, все будет работать правильно. Что я могу сделать, чтобы это исправить?
Я храню библиотеки в отдельном каталоге / lib, и они были добавлены в корень артефакта jar как извлеченный каталог, IntelliJ IDEA - v13.0.1.
java
intellij-idea
optaplanner
Грудольф
источник
источник
Ответы:
У меня такая же проблема.
Убедитесь, что ваш MANIFEST.MF находится в:
НЕ
источник
Исправить:
источник
Как указано в комментарии @grudolf в одном из других ответов, один из способов сделать это (и единственный, который работал у меня в импортированном проекте Gradle) - создать пустую банку следующим образом:
ОБНОВИТЬ:
Это определенно ошибка в Idea. Этот связанный ответ надежно работает, когда есть извлеченные каталоги. В сущности, вы найдете .idea / JARNAME.xml, добавьте добавить следующий элемент в самом верху этого
<root>
элемента для вашей баночки. Любые извлеченные элементы над вашей новой копией файла, которые содержат манифест, будут уничтожать ваш новый манифест.источник
Если вы хотите указать основной класс, вам нужно добавить этот плагин в pom.xml:
источник
У меня была похожая проблема.
Проблема была в файле pom.xml.
Я не знаю, по какой причине этот код работает в eclipse, но не в IntelliJ
Это правильно.
Manifest.mf сработал !!!
Надеюсь, это поможет.
источник
Есть несколько способов создания исполняемых jar-файлов. Использование функции графического интерфейса IntelliJ - хороший способ. Другой способ - использовать Maven (или аналогично в gradle, buildr и т. Д.), Который удобен для сборки-сервера:
Это более или менее скопировать и вставить из примеров сборки maven optaplanner:
источник
Чтобы не было проблем, подобных Manifest, у вас должен быть каталог с именем «META-INF» в каталоге «src». Итак, создайте его и поместите в него файл с именем «MANIFEST.MF» со следующим содержимым:
Не забыть заменить имя пакета, содержащего основной класс выше!
источник