12

我真正需要的是来自 Eclipse with Netbeans 的等价物:

在此处输入图像描述

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

这是原始问题。

我正在尝试用Netbeans构建一个 jar ,它将所有库文件打包在其中。我听说 Eclipse 可以通过选择 Export 来实现。使用 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>

注意我从这个论坛得到这个。

4

4 回答 4

16

我更喜欢这个解决方案,因为没有什么可下载的,全部基于 Ant 构建(约 20 行)。这样就没有额外的依赖关系了。如果你有几分钟的时间,你也可以了解 Ant。

似乎指向原始文章的链接已损坏(感谢 Oracle)。这是另一个链接

原始文章也可从 Oracle链接获得。

于 2012-05-08T21:50:46.603 回答
5
  1. 使用 7zip(或其他工具)打开生成的 jar
  2. 将jar库添加到文件夹中
  3. 编辑清单以设置类路径
于 2013-10-03T13:20:09.093 回答
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 安装

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

MyJarFile-1.0-jar-with-dependencies.jar

现在

光盘目标

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

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

于 2015-02-13T00:43:51.737 回答
-1

没有内置的方法可以做到这一点。但是,您可以使用外部工具来归档此文件,例如 OneJar:

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

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

于 2012-05-08T19:49:56.013 回答