Портлет 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, упомянутой конфигурации Gradle будет достаточно.
Чтобы исправить 2, убедитесь, что пакет MySQL установлен, вы можете поместить его в папку развертывания или в папку osgi/modules.
Чтобы исправить 3, вам нужно объявить зависимость уровня пакета в вашем файле bnb.bnd.
3 действительно странно, потому что, когда вы используете bndtools, вы обычно просите инструмент определить ваши зависимости с помощью
Импорт-пакет: *
Но в этом случае зависимость создается классами, загружаемыми по имени, в строке, что заставляет вас использовать явно объявленную зависимость
Импорт-пакет: com.mysql.jdbc, *