Netbeans Export to Jar включает все файлы библиотек
Что мне действительно нужно является эквивалентом этого из Eclipse с Netbeans:
![enter image description here]()
Я хочу Extract required libraries into generated JAR
, чтобы я мог распространять его без необходимости включать в него папку lib.
Вот оригинальный вопрос.
Я пытаюсь построить банку из Netbeans, которая будет упаковывать в нее все файлы библиотеки. Я слышал, что это возможно с помощью Eclipse, выбрав "Экспорт". Если Netbeans, если я "Clean and Build", он создаст исполняемую банку в папке dist, но все библиотеки, от которой она зависит, находятся в папке lib. Мне нужно, чтобы все было в одном файле jar. Я думаю, что это связано с файлом build.xml. Вот что говорит моя. Что я здесь не так понял?
Спасибо за помощь.
<?xml version="1.0" encoding="UTF-8"?>
<project name="BONotifier" default="default" basedir=".">
<description>Builds, tests, and runs the project BONotifier.</description>
<import file="nbproject/build-impl.xml"/>
<target name="-post-jar">
<jar jarfile="dist/Combined-dist.jar">
<zipfileset src="${dist.jar}" excludes="META-INF/*" />
<zipfileset src="lib/commons-io-1.4.jar" excludes="META-INF/*" />
<manifest>
<attribute name="Main-Class" value="controller.MainController"/>
</manifest>
</jar>
</target>
</project>
Обновить: приведенный выше код находится в файле build.xml. В build-impl.xml приведено следующее. Я предполагаю, что это означает, что build.xml запускается во время build-impl.xml.
<target name="-pre-init">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
Примечание Я получил это от forum.
Ответы
Ответ 1
Я предпочитаю это решение, так как загружать нечего, все на основе Ant build (~ 20 строк). Таким образом, нет никакой дополнительной зависимости, чтобы беспокоиться. Если у вас есть несколько минут, вы также можете узнать о Ant.
Кажется, что ссылка на оригинальную статью нарушена (спасибо Oracle). Вот еще ссылка.
Оригинальная статья также доступна из Oracle ссылка.
Ответ 2
- Откройте сгенерированную банку с помощью 7zip (или других инструментов).
- Добавить библиотеку jar в папку
- Отредактируйте манифест для установки пути к классу
Ответ 3
Хорошо, так это мое решение. У меня тоже была проблема с моей компиляцией и запуском программы на Netbeans, но она не срабатывала, когда я пробовал Java -jar MyJarFile.jar. Теперь я не совсем понимаю Maven, и я думаю, что это вызвало проблемы с тем, что Netbeans 8.0.2 включил мою банку файл в библиотеке, чтобы поместить их в файл jar. Я думал о том, как я использовал файлы jar без Maven в Eclipse.
Это Maven, который собирает все зависимости и плагины. Не Netbeans. (Если вы можете заставить Netbeans сделать это, сообщите нам, как (^. ^) V)
[Решено - для Linux], открыв терминал.
Тогда
cd/MyRootDirectoryForMyProject
Далее
mvn org.apache.maven.plugins: maven-compiler-plugin: компилировать
Далее
mvn install
Это создаст файл jar в целевом каталоге.
MyJarFile-1,0-банку-с-dependencies.jar
Теперь
cd target
(Возможно, вам потребуется запустить: chmod + x MyJarFile-1.0-jar-with-dependencies.jar)
И наконец
java -jar MyJarFile-1.0-jar-with-dependencies.jar
См.
https://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundException
Я отправлю это решение на пару других страниц с аналогичной проблемой. Надеюсь, я смогу спасти кого-нибудь из недели разочарования.
Ответ 4
Там нет встроенного способа сделать это. Однако вы можете использовать внешние инструменты для архивирования, например OneJar:
http://one-jar.sourceforge.net/
Edit: По-видимому, это даже то, как команда Netbeans ожидает, что вы это сделаете: http://wiki.netbeans.org/PackagingADistributableJavaApp