Liferay MVC Portlet java.lang.ClassNotFoundException

时间:2017-10-04 07:46:41

标签: java osgi mysql-connector liferay-7

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

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

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的新手。

谢谢。

1 个答案:

答案 0 :(得分:1)

根据给出的信息,您可能错过了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的新结构下运行,那么您的环境将需要一个包,为您提供从此Jar使用的包。 Tomcat附带的那个不会被考虑在内。

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

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

此问题涉及3个问题

  1. 构建环境配置
  2. 运行时环境配置
  3. 运行时配置
  4. 要修复1,提到的Gradle配置就足够了。

    要修复2,请确保已安装MySQL软件包,您可以将其放在deploy文件夹或osgi / modules文件夹中。

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

    3真的很奇怪,因为当你使用bndtools时,你通常会要求工具检测你的依赖关系

      

    Import-Package:*

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

      

    Import-Package:com.mysql.jdbc,*