【问题标题】:Netbeans not able to import FileUtils pacakge?Netbeans 无法导入 FileUtils 包?
【发布时间】:2018-12-04 10:13:27
【问题描述】:

我正在将我的 java 软件编译为 Netbeans IDE 8.2。它使用包 FileUtils。

 import org.apache.commons.io.FileUtils;

我正在使用 FileUtils 中的以下函数:

 FileUtils.copyURLToFile(inputUrl, dest);

使用 Netbeans IDE 构建和运行良好。

但是,当我使用命令单独运行 jar 文件时:

    java -jar myProgram.jar 

我在同一行出现以下错误:

     java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils

我不明白为什么 FileUtils 没有被打包到 jar 文件中。 请帮忙。

这是我的Apache Ant 构建文件:

 <target name="package-for-store" depends="jar">
<property name="store.jar.name" value="iNetsControlProgramAllOs"/>
<property name="store.dir" value="store"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
<delete dir="${store.dir}"/>
<mkdir dir="${store.dir}"/>
<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
    <zipgroupfileset dir="dist" includes="*.jar"/>
    <zipgroupfileset dir="dist/lib" includes="*.jar"/>
    <manifest>
        <attribute name="Main-Class" value="${main.class}"/>
    </manifest>
</jar>
<zip destfile="${store.jar}">
    <zipfileset src="${store.dir}/temp_final.jar"
    excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete file="${store.dir}/temp_final.jar"/>

【问题讨论】:

  • 您似乎没有将外部库包含到您要导出的 JAR 中。我不使用 NetBeans,但本指南可能会对您有所帮助:jitendrazaa.com/blog/java/…

标签: java netbeans netbeans-8 apache-commons fileutils


【解决方案1】:

您的 jar 不包含第三方库,您必须包含它们。

你如何构建你的 myProgram.jar?

如果您使用 Netbeans 本身执行此操作,您可以关注 this documentation 上的“添加必要的库”。

否则,如果还没有,您可以考虑使用Maven

编辑:好的,你正在使用Apache Ant 因此,您需要在“构建路径”中包含第三方库,这是您现有线路的目标:

<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>

您能否检查提供 FileUtils 的第三方 Jar 文件在哪里?

我猜它不在 dist 下,无论是 dist/lib。

此外,您应该将语法更改为:

<zipgroupfileset dir="dist/lib" includes="**/*.jar"/>

确保关于 dist/lib one 的每个子目录中的所有库。

如果您需要进一步的解释,请告诉我。

【讨论】:

  • 嗨 Bsquare,如何包含第三方库。你能澄清一下吗?
  • 是的,你用什么来构建你的 .jar 文件? => 我更新了我的答案
  • 实际上我正在使用 build.xml 文件,该文件有一个名为“存储包”的目标。当我单击它时,它会创建 jar 文件。
  • 好的,我猜它是一个 Ant 文件,你能把它复制/粘贴到你原来的问题中吗?
  • 谢谢。您已经有一个 ** * 所以要么你的第三方库不在这个目录中,要么它在一个子目录中目录。我又完成了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2016-08-14
  • 2019-05-07
相关资源
最近更新 更多