Портлет Liferay MVC java.lang.ClassNotFoundException

Мой портал Liferay 7 ga4 работает на wildfly 10. Я создал портлет Liferay MVC и развернул его. Я пытаюсь подключиться к базе данных MySql, но получаю эту ошибку: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Я импортировал mysql-connector-java-5.1.42-bin.jar (щелкните правой кнопкой мыши на проекте> Путь сборки> Настроить путь сборки> Добавить JAR-файлы. Он шел в разделе "Библиотеки со ссылками".

А вот и код view.jsp

try{
    String connectionURL = "jdbc:mysql://localhost/employees";

    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    connection = DriverManager.getConnection(connectionURL, "root", "");
    statement = connection.createStatement();

    if(!connection.isClosed()){
        out.println("Successfully connected to MySQL server" + "<br/>");
    }

} catch(Exception ex){    

    out.println("Unable to connect to database: "+ ex);  

}   

Может кто-нибудь, пожалуйста, помогите мне? Я абсолютно новичок в Liferay и Java.

Спасибо.

1 ответ

Решение

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

Добавлять:

// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.42'

Щелкните правой кнопкой мыши проект, и в Gradle обновите проект gradle.

Также имейте в виду, что если ваш портлет работает под новой структурой, основанной на OSGi, ваша среда должна иметь пакет, предлагающий пакеты, используемые из этого Jar-файла. Тот, что поставляется с Tomcat, не будет принят во внимание.

Поскольку эта версия MySQL является пакетом OSGi, вы можете поместить его в папку развертывания или просто оставить в папке модулей.

Вы также можете использовать другие версии, если хотите... https://www.e-systems.tech/web/guest/blog/-/blogs/liferay-with-mysql-5-7-driver-changes


Есть 3 проблемы, связанные с этим вопросом

  1. Конфигурация среды сборки
  2. Конфигурация среды выполнения
  3. Конфигурация времени выполнения

Чтобы исправить 1, упомянутой конфигурации Gradle будет достаточно.

Чтобы исправить 2, убедитесь, что пакет MySQL установлен, вы можете поместить его в папку развертывания или в папку osgi/modules.

Чтобы исправить 3, вам нужно объявить зависимость уровня пакета в вашем файле bnb.bnd.

3 действительно странно, потому что, когда вы используете bndtools, вы обычно просите инструмент определить ваши зависимости с помощью

Импорт-пакет: *

Но в этом случае зависимость создается классами, загружаемыми по имени, в строке, что заставляет вас использовать явно объявленную зависимость

Импорт-пакет: com.mysql.jdbc, *

Другие вопросы по тегам