Netbeans导出Jar文件,包括所有库文件

12

我真正需要的是与Eclipse和Netbeans中的这个功能类似的东西:

enter image description here

我想要将所需的库提取到生成的JAR文件中,这样我就可以在不必随处携带lib文件夹的情况下分发它。

以下是原始问题:

我正在尝试从Netbeans构建一个jar文件,以将所有库文件打包在其中。我听说使用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-impl.xml文件运行时会执行build.xml文件。

<target name="-pre-init">
    <!-- Empty placeholder for easier customization. -->
    <!-- You can override this target in the ../build.xml file. -->
</target>

注意:我是从这个论坛中得到的。


尝试将此JAR任务添加到“nbproject/build-impl.xml”中,其中包含创建JAR的任务。 - Paulius Matulionis
4个回答

16

我更倾向于这个解决方案,因为它无需下载,完全基于Ant构建(约20行代码)。这样就不会有额外的依赖关系需要处理。如果你有几分钟时间,也可以学习一下Ant。

看起来原始文章的链接已经失效了(感谢Oracle)。这是另一个链接

原始文章也可以从Oracle的链接中获取。


3
这个链接已经失效了,您有没有修复它的可能或者直接在您的回答中包含相关信息? - gnomed
@gnomed 我已更新链接,如果您能重新表述解决方案,请随意更新我的答案。 - user845279

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

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

正是Maven编译所有依赖项和插件,而不是Netbeans。(如果您能让Netbeans做到这一点,请告诉我们如何(^。^)v)

[已解决-适用于Linux]通过打开终端。

然后

cd /MyRootDirectoryForMyProject

下一步

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

下一步

mvn install

这将在目标目录中创建jar文件。

MyJarFile-1.0-jar-with-dependencies.jar

现在

cd目标

(您可能需要运行: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

我将在其他几个存在类似问题的页面上发布这个解决方案。希望我可以帮助某些人省去一周的挣扎。


-1

我看到了你的更新。我仍然建议你选择OneJar。它更加通用,而且请查看我的编辑:9。 - bluehallu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接