Tomcat не распознает библиотеку MySQL .jar - PullRequest
0 голосов
/ 23 октября 2009

Я пробовал несколько разных способов, чтобы Tomcat загружал драйверы MySQL при запуске моего веб-приложения. Я использую Ubuntu 8.04, а библиотеки поставляются из пакета libmysql-java. Они расположены в каталоге, показанном ниже:

~$ ls /usr/share/java/mysql*
/usr/share/java/mysql-connector-java-5.1.5.jar

Мой CLASSPATH включает этот файл:

~$ echo $CLASSPATH
.:/usr/lib/jvm/java-6-sun/bin:/usr/local/tomcat/lib/servlet-api.jar:/usr/share/java/mysql-connector-java-5.1.5.jar

Я даже поместил копию файла .jar в каталог WEB-INF / lib / в своем веб-приложении:

/usr/local/tomcat/webapps/ohms/WEB-INF/lib$ ls
mysql-connector-java-5.1.5.jar

После внесения этих изменений я перезагружаю Tomcat, перекомпилирую свои классы, перезапускаю Tomcat снова. Также я импортирую необходимые библиотеки, используя import java.sql.*;

Однако я все еще получаю ошибку java.lang.ClassNotFoundException: com.mysql.jdbc.Driver при запуске строки Class.forName("com.mysql.jdbc.Driver").newInstance();

Что я здесь не так делаю?

Ответы [ 4 ]

2 голосов
/ 23 октября 2009

Поместите его в TOMCAT_HOME / lib. (Кажется, я помню, что в более старых версиях Tomcat это TOMCAT_HOME / server / lib?)

Он не будет работать в WEB-INF / lib, так как контейнеру нужен доступ к библиотеке, и, следовательно, он помещается в загрузчик классов одного веб-приложения, а не в контейнер. Хотя я и предполагал, что подход CLASSPATH сработает, это не стандартный способ сделать это. Возможно, есть еще одна загвоздка, которая мешает ему работать.

1 голос
/ 03 ноября 2014

Еще одна вещь, которую вы можете захотеть сделать, если вы не хотите помещать файл в директорию lib Tomcat. В catalina.sh говорится, что он проверит setenv.sh на наличие переменной, включающей внешние jar-файлы. Так, например, как я это сделал, вы можете создать этот файл:

$CATALINA_HOME/bin/setenv.sh

с содержанием:

CLASSPATH=lib/mysql-connector-java-5.1.33-bin.jar

Путь к банке будет зависеть от того, где вы запускаете Tomcat, также известный как ваш рабочий каталог. Так, например, в моем случае я запускаю Catalina из сценария Ant на два уровня выше $ CATALINA_HOME, и моя директория lib находится прямо под этой точкой.

1 голос
/ 20 июня 2014

Скопируйте MySQL-коннектор в / usr / share / tomcat7 / lib

1 голос
/ 23 октября 2009

Tomcat игнорирует любую переменную среды CLASSPATH, как и все серверы приложений Java EE и IDE. Это тебе не поможет. Я не установил один на любой машине, которую я использую.

JAR должен находиться на сервере Tomcat / lib для Tomcat 5.x и / lib для 6.x.

Вам не нужно вызывать newInstance (); Class.forName ("com.mysql.jdbc.Driver") достаточно для регистрации класса драйвера.

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