Установка classpath для JAR - PullRequest
2 голосов
/ 09 января 2012

У меня есть отдельный проект Java.Я выполнил чистую установку maven.Теперь я захожу в папку target \ classes через командную строку и устанавливаю все необходимые файлы в classpath.Сейчас я выполняю основной класс.Результат отображается.

Теперь я возвращаюсь к целевой папке через командную строку и пытаюсь выполнить файл JAR (файл JAR содержит файл манифеста, в котором определен основной класс).

Java -cp %CLASSPATH% -jar Destination-01.19-SNAPSHOT.jar

Теперь я получаюниже исключение.Я также удалил атрибут classpath из приведенного выше оператора, но все еще получаю то же исключение. Необходимый класс установлен в переменной classpath, поэтому я смог запустить основной класс без использования атрибута -jar.

Исключение в потоке "Основной поток" java.lang.NoClassDefFoundError: org / apache / co mons / logging / LogFactory

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Когда вы используете -jar, это единственный механизм, задающий путь к классу для программы.

У вас должны быть все необходимые баночки, перечисленные в строке Class-Path в манифесте (что подразумевает, что их нужно найти в локальной файловой системе), или создать пользовательский загрузчик классов, способный найти нужную банку.

4 голосов
/ 09 января 2012

Кажется, что -cp и -jar несовместимы. Вам нужно указать путь к классам в манифесте

См. http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

Если вы хотите, чтобы maven автоматически обновлял путь к классам, см .: -

http://maven.apache.org/shared/maven-archiver/examples/classpath.html

...