Класс не найден, даже если он импортирован

2

У меня есть класс в моей программе, которую я разрабатываю. Это класс OpenCSV для чтения и обработки файлов csv.

Он импортируется в мой путь к классам в eclipse, а также import au.com.bytecode.opencsv.*;. Eclipse не показывает никаких ошибок и не работает на этом Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

и я просто не могу понять, почему он терпит неудачу в этой строке. Я даже пытался импортировать весь исходный код в свой проект, но он всегда терпит неудачу при ошибке ClassNotFound. Это приложение jsp, запущенное на сервере apache tomcat 6.

  • 0
    Вы также запускаете приложение через Eclipse?
  • 0
    я забыл упомянуть об этом тоже ... это приложение JSP, работающее на Tomcat
Показать ещё 1 комментарий
Теги:
class

4 ответа

3

Вам нужно полностью квалифицировать имя класса. Попробуйте

Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

Из документов Class.forName:

Учитывая полное имя класса или интерфейса (в том же формате, который возвращает getName), этот метод пытается найти, загрузить и связать класс или интерфейс.

Оператор import используется только во время компиляции. (В байт-коде нет следа import.) Таким образом, загрузчик классов, которому предлагается загрузить "CSVReader", не может знать, в каком пакете вы говорите (и на самом деле просто ищет класс по умолчанию пакет).


Относительно ваших обновлений...

Вам нужно убедиться, что библиотека opencsv находится в пути к классу вашего веб-приложения. Недостаточно, чтобы это было во время компиляции...

  • 0
    извините ... забыл обновить мое описание ... я пробовал это перед публикацией, и он всегда терпит неудачу на этом.
  • 0
    это в моем classpath, который также экспортируется с приложением.
Показать ещё 1 комментарий
2

Являются ли требуемые классы в WEB-INF/lib или WEB-INF/классах развернутого файла .war?

  • 0
    я пока не экспортирую ... я запускаю сервер apache из eclipse, который должен делать это, когда я запускаю сервер ---- я попытался экспортировать его, но его там нет ... что странно
1

Попробуйте переместить файл csv jar в папку src, а затем выполните следующие действия: Ваш проект → правый клик → Свойства → Путь сборки Java → Библиотеки → Добавить Jar → yourjar.jar

Если у вас уже есть файл js csv в папке src, попробуйте создать новую папку "lib" в основной папке проекта и добавить к ней этот файл js jar и выполнить следующие шаги.

0

вы должны использовать FQCN (полное имя класса) для Class.forName().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню