java - Liferay MVC Portlet java.lang.ClassNotFoundException

标签 java osgi mysql-connector liferay-7

我的 Liferay 门户 7 ga4 正在 Wildfly 10 上运行。我创建了一个 Liferay MVC portlet 并进行了部署。我正在尝试连接到 MySql 数据库,但收到此错误: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

我通过(右键单击项目>构建路径>配置构建路径>添加 JAR 导入了 mysql-connector-java-5.1.42-bin.jar。它位于“引用库”下。

enter image description here

这是 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 完全陌生。

谢谢。

最佳答案

根据给出的信息,您可能缺少 gradle.build 中的依赖项

添加:

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

右键单击您的项目,然后在 Gradle 中刷新 gradle 项目。

另外,请记住,如果您的 portlet 在基于 OSGi 的新结构下运行,您的环境将需要有一个 bundle ,为您提供从此 Jar 中使用的包。 Tomcat 自带的不考虑在内。

由于此版本的 MySQL 是 OSGi bundle ,因此您可以将其放入部署文件夹中,或者只是将其放在模块文件夹中。

如果您愿意,也可以使用其他版本... https://www.e-systems.tech/web/guest/blog/-/blogs/liferay-with-mysql-5-7-driver-changes

<小时/>

有 3 个与此问题相关的问题

  1. 构建环境配置
  2. 运行时环境配置
  3. 运行时配置

要修复 1,提到的 Gradle 配置就足够了。

要修复 2,请确保安装了 MySQL 的 bundle ,您可以将其放入部署文件夹或 osgi/modules 文件夹中。

要修复 3,您需要在 bnb.bnd 文件中声明包级别依赖项。

3 确实很奇怪,因为当您使用 bndtools 时,您通常会要求该工具使用

检测您的依赖关系

Import-Package: *

但在这种情况下,依赖项是由按名称加载的类创建的,在字符串中,这迫使您使用显式声明的依赖项

Import-Package: com.mysql.jdbc, *

关于java - Liferay MVC Portlet java.lang.ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46559600/

相关文章:

java - 如何在Java Android中停止程序1秒?

java - 如果库存为 0,则尝试将商品的可用性设置为“否”且不可用(无法发行),但该商品似乎仍在发行

java - 用于在多个不同的 javac 任务中指定源/版本的 Ant 快捷方式

java - OSGi 中的回调和传递对象引用

java - 帮助制定为期 2 周的 Spring 和 OSGi 学习计划

python - 无法在 CentOS 7 中安装 mysqlclient

c# - 无法捕获 MySqlConnection Open()

mysql - 检查mysql表中是否存在列名

java - 注解默认值 "null"

java - 使用bnd工具生成MANIFEST文件