Netbeans Export to Jar,包括所有库文件

时间:2012-05-08 19:20:10

标签: java netbeans jar netbeans-7 build.xml

我真正需要的东西与Eclipse和Netbeans相当:

enter image description here

我想Extract required libraries into generated JAR所以我可以分发它,而不需要在任何地方都包含lib文件夹。

这是原始问题。

我正在尝试用Netbeans构建一个jar,它会将所有库文件打包在其中。通过选择Export,我听说Eclipse是可能的。使用Netbeans,如果我“清理并构建”它将在dist文件夹中创建一个可执行jar,但它所依赖的所有库都在一个名为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得到了这个。

4 个答案:

答案 0 :(得分:16)

我更喜欢this解决方案,因为没有任何内容可供下载,所有内容都基于Ant构建(~20行)。这样就没有额外的依赖性了。如果你有几分钟的时间,你也可以了解Ant。

似乎原始文章的链接已被破坏(感谢Oracle)。这是另一个link

原始文章也可从Oracle link获得。

答案 1 :(得分:5)

  1. 使用7zip(或其他工具)打开生成的jar
  2. 将jar库添加到文件夹
  3. 编辑清单以设置类路径

答案 2 :(得分:1)

好的,这是我的解决方案。我也遇到了我的程序在Netbeans上编译和运行的问题,但是当我尝试Java -jar MyJarFile.jar时它失败了现在,我还没有完全理解Maven,我认为这就是为什么让Netbeans 8.0.2包含我的jar有困难将文件放入库中以将它们放入jar文件中。我在考虑如何在Eclipse中使用没有Maven的jar文件。

编译所有依赖项和插件的是Maven。不是Netbeans。 (如果你能让Netbeans这样做,请告诉我们如何(^。^)v)

[Solved - for Linux]打开终端。

然后

cd / MyRootDirectoryForMyProject

下一步

mvn org.apache.maven.plugins:maven-compiler-plugin:compile

下一步

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

我会将此解决方案发布在其他几个类似问题的页面上。希望我能在一周的挫折中拯救一些人。

答案 3 :(得分:-1)

没有内置方法可以做到这一点。但是,您可以使用外部工具将其归档为OneJar:

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

编辑:显然这甚至是Netbeans团队希望您这样做的方式:http://wiki.netbeans.org/PackagingADistributableJavaApp