我的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”下。
这是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的新手。
谢谢。
答案 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,提到的Gradle配置就足够了。
要修复2,请确保已安装MySQL软件包,您可以将其放在deploy文件夹或osgi / modules文件夹中。
要修复3,您需要在bnb.bnd文件中声明包级别依赖项。
3真的很奇怪,因为当你使用bndtools时,你通常会要求工具检测你的依赖关系
Import-Package:*
但在这种情况下,依赖关系是由名称加载的类创建的,在字符串中,这会强制您使用显式声明的依赖项
Import-Package:com.mysql.jdbc,*