Netbeans не может импортировать пакет FileUtils?

Я компилирую свое программное обеспечение Java как Netbeans IDE 8.2. Он использует пакет FileUtils.

 import org.apache.commons.io.FileUtils;

Я использую функцию ниже из FileUtils:

 FileUtils.copyURLToFile(inputUrl, dest);

Он отлично строится и отлично работает с использованием IDE Netbeans.

Однако, когда я запускаю файл 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"/>


person Sarwan    schedule 04.12.2018    source источник
comment
Похоже, вы не включаете внешнюю библиотеку в экспортируемый JAR-файл. Я не использую NetBeans, но это руководство может вам помочь: jitendrazaa.com/blog/java/   -  person BlacK    schedule 04.12.2018


Ответы (1)


Ваш jar не включает библиотеки сторонних разработчиков, вы должны включить их.

Как вы создаете myProgram.jar?

Если вы выполняете это с помощью самого Netbeans, вы можете следовать «Добавление необходимых библиотек» в этой документации.

В противном случае, если это еще не так, вы можете рассмотреть возможность использования 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 one.

Дайте мне знать, если вам нужны дальнейшие объяснения.

person Bsquare ℬℬ    schedule 04.12.2018
comment
Привет, Bsquare, Как включить сторонние библиотеки. Не могли бы вы уточнить? - person Sarwan; 04.12.2018
comment
Да, что вы используете для создания файла .jar? = ›Я обновил свой ответ - person Bsquare ℬℬ; 04.12.2018
comment
на самом деле я использую файл build.xml, у которого есть цель под названием package для магазина. Когда я нажимаю на нее, создается файл jar. - person Sarwan; 04.12.2018
comment
Хорошо, я предполагаю, что это Ant-файл, не могли бы вы скопировать / вставить его в свой исходный вопрос, пожалуйста? - person Bsquare ℬℬ; 04.12.2018
comment
Спасибо. У вас уже есть ** ‹zipgroupfileset dir = dist / lib includes = .jar /› *, поэтому либо ваши сторонние библиотеки НЕ в этом каталоге, либо в подкаталоге. Я снова закончил свой ответ. - person Bsquare ℬℬ; 04.12.2018
comment
Спасибо Bsquare. Это устранило проблему. Большое спасибо. - person Sarwan; 04.12.2018