2012-05-08 1 views
12

Что мне действительно нужно является эквивалентом этого из Затмения с Netbeans:Netbeans Экспорт в Jar, включают в себя все файлы библиотек

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> 

Update: Код выше в 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.

+0

Попробуйте добавить эту задачу jar в "nbproject/build-impl.xml", где задача создания jar. –

+0

См. Обновление. – kentcdodds

+0

Подробнее см. Обновление :) – kentcdodds

ответ

15

Я предпочитаю this решение, так как загружать нечего, все на основе Ant build (~ 20 строк). Таким образом, нет никакой дополнительной зависимости, чтобы беспокоиться. Если у вас есть несколько минут, вы также можете узнать об Анте.

Кажется, что ссылка на оригинальную статью нарушена (спасибо Oracle). Вот еще link.

Оригинальная статья также доступна в Oracle link.

+0

Работал как шарм. Спасибо :) – kentcdodds

+3

@ user845279 Эта ссылка сейчас не работает. Есть ли возможность исправить это или включить соответствующую информацию непосредственно в свой ответ? – gnomed

+0

@gnomed Я обновил ссылку, не стесняйтесь обновлять свой ответ, если вы можете перефразировать решение. – user845279

-1

Нет встроенного способа сделать это. Вы можете, однако, использовать внешние инструменты для архивирования это как OneJar:

http://one-jar.sourceforge.net/

Edit: Видимо, это даже как команда Netbeans ожидает от вас, чтобы сделать это: http://wiki.netbeans.org/PackagingADistributableJavaApp

+0

См. Обновление. – kentcdodds

+0

Я вижу ваше обновление. Я по-прежнему рекомендую вам пойти на OneJar. Это гораздо более универсальный, плюс, см. Мое редактирование: 9 – bluehallu

4
  1. Открыть генерируемую банку с 7zip (или другими инструментами)
  2. Добавить библиотеку баночки в папку
  3. Редактировать манифест, чтобы установить путь к классу
1

Итак, это мой решение. У меня тоже была проблема с моей компиляцией и запуском программы на Netbeans, но она не срабатывала, когда я пробовал Java -jar MyJarFile.jar. Теперь я не совсем понимаю Maven, и я думаю, что это вызвало проблемы с тем, что Netbeans 8.0.2 включил мою банку файл в библиотеке, чтобы поместить их в файл jar. Я думал о том, как я использовал файлы jar без Maven в Eclipse.

Это Maven, который собирает все зависимости и плагины. Не Netbeans.(Если вы можете получить Netbeans для этого, сообщите нам, как (^. ^) V)

[Решено - для Linux], открыв терминал.

Затем

кд/MyRootDirectoryForMyProject

Следующая

МВН org.apache.maven.plugins: Maven-компилятора плагин: компилировать

Далее

МВН установить

Это создаст файл jar в целевой каталог.

MyJarFile-1,0-банку-с-dependencies.jar

Теперь

целевой кд

(Вы, возможно, потребуется выполнить: CHMOD + х MyJarFile-1.0-банку-с-зависимостей. баночка) И наконец

Java -jar MyJarFile-1,0-банку-с-dependencies.jar

Пожалуйста, см

https://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundException

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