WedX - журнал о программировании и компьютерных науках

драйверы загружены в apache-tomcat-6.0.36/lib, но все еще не найдены подходящие драйверы

Я изучаю веб-сервисы в eclipse helios с осью 2 и apache tomcat. У меня есть два динамических веб-проекта с классами Java, которые успешно подключаются к двум базам данных, когда я запускаю их как простые классы Java в eclipse. (Я добавил внешние банки во внешний путь сборки для проекта). Но когда я запускаю либо на сервере, я получаю сообщение об ошибке: No suitable driver found. Я знаю, что мне нужно загрузить необходимые драйверы в apache-tomcat-6.0.36/lib и я так и сделал (и перезапустил сервер). (см. Подходящий драйвер не найден).

Я использую этот оператор для создания драйвера в моем классе Java:

Class.forName("org.postgresql.Driver"); //throws class not found exception w/message "com.postgresql.jdbc.Driver"
conn = DriverManager.getConnection(url, user, password);

Почему apache не «видит» драйверы .jar в своей папке /lib? В некоторых старых учебниках говорится, что нужно поместить .jars в common/lib, но я не вижу эту папку в своей структуре каталогов apache tomcat. Что я могу сделать, чтобы отладить эту проблему?

10.04.2013

  • Добавьте банку в библиотеку проекта под WEB-INF/lib 10.04.2013
  • Правильное имя квалифицированного класса Driver: org.postgresql.Driver. 10.04.2013
  • Я добавил драйверы в /apache-tomcat-6.0.36/webapps/axis2/WEB-INF/lib. Нужно ли добавлять их в проект WEB-INF/lib перед созданием файла .aar? 10.04.2013
  • Да, я имел в виду поместить их в проект WEB-INF/lib 10.04.2013
  • поэтому поместите их в /workspace/PersonalInfoService/WebContent/WEB-INF, а затем перейдите в подкаталог /workspace/PersonalInfoService/WebContent/WEB-INF/services/PersonalInfoService, чтобы запустить jar cvf PersonalInfoService.aar ./* 10.04.2013
  • Нет, создайте каталог lib в /workspace/PersonalInfoService/WebContent/WEB-INF и поместите его туда. Что касается того, как вы управляете aar, я не знаю. 10.04.2013

Ответы:


1

В зависимости от версии Java (и, следовательно, версии JDBC), которую вы используете, вам может потребоваться вызвать Class.forName() перед вызовом DriverManager.getConnection(...). Это заставляет JVM загружать класс, чтобы JDBC знал, что класс является драйвером для вашего типа соединения. Без этого JDBC не знает драйвера для вашего типа базы данных и, таким образом, выдает «Подходящий драйвер не найден».

Если вы запускаете свой класс в Eclipse с использованием Java 7 (и, следовательно, JDBC 4.0), драйверы, которые находятся в вашем пути к классу, загружаются автоматически. В версиях Java до 7 (и, следовательно, JDBC до 4.0) вам необходимо зарегистрировать драйвер вручную, как объяснялось. Подробнее см. в руководстве по JDBC.

10.04.2013
  • да, и поместить его в try{...} catch (ClassNotFoundException e) - хорошая идея 10.04.2013
  • Я добавил оператор, и он выдает исключение класса, не найденное 10.04.2013
  • Драйвер JDBC для PostgreSQL — org.postgresql.Driver (источник). 10.04.2013

  • 2

    Если эта строка раскомментирована в ${CATALINA_HOME}/conf/server.xml:

      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
    

    Измените его на:

    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" driverManagerProtection="false" />
    

    Это возвращает Tomcat к функциональности pre-6.0.35, где он правильно зарегистрировал драйверы JDBC типа 4 в ${CATALINA_HOME}/lib.

    06.08.2013
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]