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...)