Liferay MVC Portlet java.lang.ClassNotFoundException

Liferay MVC Portlet java.lang.ClassNotFoundException,java,osgi,mysql-connector,liferay-7,Java,Osgi,Mysql Connector,Liferay 7,我的Liferay portal 7 ga4正在wildfly 10上运行。我已经创建并部署了一个Liferay MVC portlet。我正在尝试连接MySql数据库,但出现以下错误:java.lang.ClassNotFoundException:com.MySql.jdbc.Driver 我导入了mysql-connector-java-5.1.42-bin.jar(右键单击project>BuildPath>ConfigureBuildPath>AddJAR,它位于“引用库”下) 下面

我的Liferay portal 7 ga4正在wildfly 10上运行。我已经创建并部署了一个Liferay MVC portlet。我正在尝试连接MySql数据库,但出现以下错误:java.lang.ClassNotFoundException:com.MySql.jdbc.Driver

我导入了mysql-connector-java-5.1.42-bin.jar(右键单击project>BuildPath>ConfigureBuildPath>AddJAR,它位于“引用库”下)

下面是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);  

}   
试试看{
字符串connectionURL=“jdbc:mysql://localhost/employees";
连接=空;
Statement=null;
ResultSet ResultSet=null;
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
connection=DriverManager.getConnection(connectionURL,“根”,“根”);
statement=connection.createStatement();
如果(!connection.isClosed()){
out.println(“成功连接到MySQL服务器”+“
”; } }捕获(例外情况除外){ out.println(“无法连接到数据库:+ex”); }
有人能帮帮我吗?我对Liferay和Java完全陌生


谢谢。

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

加:

在项目上单击鼠标右键,然后在Gradle中刷新Gradle项目

另外,请记住,如果您的portlet是在基于OSGi的新结构下运行的,那么您的环境将需要一个包,该包为您提供从这个Jar使用的包。Tomcat附带的包将不会被考虑在内

由于此版本的MySQL是一个OSGi捆绑包,您可以将其放入deploy文件夹,也可以将其放入modules文件夹

你也可以使用其他版本,如果你想。。。


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

  • 构建环境配置
  • 运行时环境配置
  • 运行时配置
  • 要修复1,所提到的Gradle配置就足够了

    要修复2,请确保安装了MySQL捆绑包,您可以将其放到部署文件夹或osgi/modules文件夹中

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

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

    进口包装:*

    但是在本例中,依赖项是由一个名为的类在字符串中创建的,这迫使您使用显式声明的依赖项

    导入包:com.mysql.jdbc*


    它似乎不是重复的,这个问题似乎与gradle配置和OSGi环境有关。你能显示你的gradle配置吗?嗨,Victor,我在build.gradle文件和refresh gradle项目中包含了依赖项。我可以在项目和外部依赖项中看到mysql_连接器jar文件,但错误仍然相同“java.lang.ClassNotFoundException:com.mysql.jdbc.Driver"。红色感叹号消失了吗?在这个问题中,您有两个问题,不仅仅是一个完美的问题!但是服务器中的jar与此问题无关。现在,您解决了构建问题,最后一步是修复运行时。当您将这两个问题都放在部署文件夹中时,您的环境应该可以运行了。很抱歉,您陷入了这个棘手的问题第一次接触此技术集的示例…由于OSGi需要知道包的依赖关系,您需要在bnd.bnd->Import-package中声明它:*通常这将检测您的所有依赖关系,但在Mysql情况下,您使用字符串加载类,因此不会自动检测。添加Import-package:com.Mysql.jdbc后*感谢你的帮助。很好,很棘手的一件事!我的荣幸!
    // https://mvnrepository.com/artifact/mysql/mysql-connector-java
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.42'