Intellij + Apache Math 3.3 выдает ошибку NoClassDefFound

Я скопировал библиотеку jar apache Math 3.3 в папку проекта intellij, а затем добавил ее в свой проект с помощью параметра «Добавить в библиотеку».

Хотя все компилируется и строится нормально, когда я запускаю jar своего проекта, я получаю NoClassDefFoundError для классов, которые я импортирую из математической библиотеки apache.

Любые решения?

Спасибо

Изменить:

Ниже приведена ошибка, которую я получаю

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/stat/descriptive/rank/Percentile
    at Main.main(Main.java:80)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.stat.descriptive.rank.Percentile
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 1 more

Снимок экрана диалогового окна "Модули" находится здесь: http://imgur.com/xQ102rT

Редактировать 2: я установил банку apache, используя «Добавить в библиотеку», а затем выбрав опцию «классы».

Редактирование 3. Чтобы создать банку, я выбираю «Сборка» -> «Создать артефакты» -> «Сборка».


person Opt    schedule 17.07.2014    source источник
comment
Находится ли jar библиотеки Apache в вашем пути к классам при выполнении jar проекта? Упакован ли он в банку вашего проекта и можете ли вы проверить это, изучив его содержимое?   -  person Ryan J    schedule 17.07.2014
comment
Не явно в самой команде, но не должен ли intellij автоматически связывать ее? Я искал там, но мне не нужно помещать это в свой путь к классам.   -  person Opt    schedule 17.07.2014
comment
Пожалуйста, покажите нам фактическую ошибку, которую вы видите   -  person Daniel Kaplan    schedule 17.07.2014
comment
Maven == проблема решена   -  person Software Engineer    schedule 17.07.2014
comment
Я никогда не использовал функцию пакета IntelliJ, я использовал только Maven, поэтому я не мог точно сказать, упакованы ли зависимые библиотеки с вашей банкой. Однако, если вы получаете сообщение об ошибке «класс не найден», это связано с тем, что загрузчик классов не может его найти. Его нет в вашем пути к классам или нет в банке.   -  person Ryan J    schedule 17.07.2014
comment
Кроме того, покажите нам скриншот вкладки «Добавить в библиотеку».   -  person Daniel Kaplan    schedule 17.07.2014
comment
@EngineerDollery: я не связан с менеджером IntelliJ, но я не знаю, есть ли быстрый способ использовать Maven из Intellij.   -  person Opt    schedule 18.07.2014
comment
@Opt Maven НАСТОЛЬКО прост в использовании. Справа есть даже вкладка maven.   -  person Nick Humrich    schedule 18.07.2014


Ответы (1)


Проблема связана с этой фразой:

когда я запускаю банку своего проекта

Если вы используете стандартный механизм jar Java, он не вызывает зависимости. Поэтому вам все равно нужно добавить зависимости к пути к классу. Функция IntelliJ в основном предназначена для запуска с использованием опции запуска IntelliJ. Если вместо этого вы запустите банку через командную строку, вам нужно будет добавить зависимость к пути к классу.

Если вы работаете с IntelliJ, банка считается артефактом. Вам нужно добавить библиотеку в свой артефакт сборки. Перейдите в раздел «Сборка» > «Создать артефакты». Наведите указатель мыши на банку и выберите «Изменить».

Вы должны увидеть библиотеку в разделе «Доступные элементы». Просто дважды щелкните по нему, чтобы он был добавлен в вашу банку. Затем нажмите «ОК».

person Nick Humrich    schedule 17.07.2014
comment
Я понимаю. Почему тогда trove не проблема, а apache-commons-math? - person Opt; 18.07.2014
comment
@Opt Возможно, код сначала попадает в Apache Commons. Вы пытались запустить его без математической зависимости и с находкой? - person Nick Humrich; 18.07.2014
comment
Да, это то, что я делал в начале (апач был добавлен позже). Это сработало совершенно нормально. - person Opt; 18.07.2014
comment
@Opt Можете ли вы добавить к своему вопросу команду, которую вы используете для выполнения jaring? - person Nick Humrich; 18.07.2014