Java: NoClassDefFoundError с использованием Apache Commons CLI 1.2

Я использую Apache Commons CLI 1.2 для анализа аргументов командной строки в Java. Я столкнулся с NoClassDefFoundError при попытке запустить мой класс Java, но решил это, исправив пути к классам.

Теперь у меня такое же исключение, но в отношении фактического commons-cli классы, как показано ниже:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cl i/CommandLineParser Caused by:
    java.lang.ClassNotFoundException: org.apache.commons.cli.CommandLineP arser
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class:  com.amirsys.score.api.script.CMDContentPusher.

Единственное, о чем я мог подумать, - это указать путь к классу в commons-cli jar, но это не сработало. Я не смог найти решение для исправления NoClassDefFoundError для импортируемых классов. Я думал, что они были скомпилированы в файлы.class?

1 ответ

Решение

CLI Commons не находится в classpath во время выполнения. Если вы не можете правильно определить путь к классам, попробуйте упаковать ваше приложение в один большой JAR-файл, содержащий все его зависимости, включая Commons CLI. Есть много инструментов для достижения этой цели (jarjar, onejar, плагин тени Maven...)

Другие вопросы по тегам