我正在将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不包含第三方聚会库,您必须包含它们。

您如何构建myProgram.jar?

如果您使用Netbeans本身执行此操作,则可以遵循this documentation上的“添加必需的库”。

否则,如果不是这种情况,则可以考虑使用Maven

编辑:确定,您正在使用Apache Ant
因此,您需要在“构建路径”中包括第三方库,这是您现有代码行的目标:

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


您可以检查第三方Jar文件在哪里提供FileUtils吗?

我猜它不在dist / dist / lib下。

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

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


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

让我知道您是否需要进一步的解释。

07-28 03:49
查看更多