NoClassDefFoundError в командной строке с новым проектом NetBeans - PullRequest
1 голос
/ 30 декабря 2008

Я создал новый проект J2SE в NetBeans и могу запустить его из IDE, но когда я пытаюсь запустить его с помощью Ant в командной строке, я получаю следующую проблему:

run:
     [java] Exception in thread "main" java.lang.NoClassDefFoundError: IndexBuilder
     [java] Java Result: 1

Основываясь на фрагменте из project.properties ниже, класс должен быть найден.

run.classpath=\
    ${javac.classpath}:\
    ${build.classes.dir}

Как мне исправить это?

Ответы [ 5 ]

1 голос
/ 03 марта 2009

Полученная ошибка означает, что верно одно из следующих действий:

  • Класс IndexBuilder не найден на пути к классам
  • Необходимая (для загрузки класса) зависимость IndexBuilder не найдена в пути к классам

То есть, при загрузке класса, возможно (даже вероятно), что класс может быть найден, но что некоторая критическая зависимость класса не может быть найдена. Например, если IndexBuilder расширяет другой класс и этот базовый класс не может быть найден в пути к классам, вы получите эту ошибку. Другой пример: IndexBuilder использует класс в статическом инициализаторе, и этот класс не может быть найден.

Проверьте ваш путь к классу не только для IndexBuilder, но и для всего, от чего зависит IndexBuilder.

См., Например, это обсуждение из NoClassDefFoundError.

0 голосов
/ 04 марта 2009

Работаете ли вы в Windows или Unix. В Windows попробуйте изменить файл свойств на:


run.classpath=${javac.classpath};${build.classes.dir}

Обратите внимание на точку с запятой вместо двоеточия.

0 голосов
/ 03 марта 2009

Когда вы запускаете его из командной строки, вы фактически вызываете Apache Ant . Причина, по которой вы получаете исключение ClassNotFound, заключается в том, что $ {javac.classpath} и ​​все другие свойства не заполняются должным образом. Вот почему ваш код запускается из контекста Netbeans. Netbeans устанавливает эти свойства для вас.

Чтобы ответить на исходный вопрос о том, как заставить его работать из командной строки, вам нужно либо настроить файл свойств, который определяет эти параметры, через объявление свойства:

<property file="myproject.properties"/> 

Другое решение состоит в том, чтобы установить свойства в качестве переменных среды с помощью скрипта sh. Или вы можете использовать реальные пути в скрипте сборки вместо свойств.

См. здесь для получения дополнительной информации о том, как вызывать Ant из командной строки.

0 голосов
/ 02 марта 2009

По крайней мере один из JAR / Lib, на которые ссылается ваш проект, возможно, не копируется в путь классов вашей программы. Скопируйте все файлы jars / libs, которые использует ваш проект, в папку / dist вашего проекта (или там, где находится YourApplication.jar), затем попробуйте запустить вашу программу. Если это исправит это, это означает, что ваш проект Netbeans настроен не совсем правильно.

0 голосов
/ 02 марта 2009

Вы пытались установить рабочий каталог на "build \ classes" в Свойствах проекта -> вкладка "Выполнить"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...