首页 > 解决方案 > SQLException:class org.apache.commons.dbutils.BeanProcessor (in module commons.dbutils) cannot access class Zhang because module BeanListHandlerDemo

问题描述

我在网上搜索了很长时间的解决方案,但没有找到。请帮助或尝试提供一些想法如何实现这一目标。

从表中选择

String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/gjp?serverTimezone=UTC";
String user = "root";
String password = "snn0924";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);     
String sql="select * from gjp_zhangwu";     
QueryRunner qr=new QueryRunner();
Object[] params= {};
ZhangWu zw =
    qr.query(conn, sql, new BeanHandler<ZhangWu>(ZhangWu.class), params);

似乎问题在最后一行,但是如何使用“BeanHandler”?

标签: javamysql

解决方案


发生这种情况是因为 Apache Commons DBUtils 中的未命名模块无法访问您的类。

发生这种情况是因为您使用的是Java Platform Module System
要解决这个问题,您需要导出您的包,以便 Apache 模块可以看到它们。

module your.module {
   ...
   exports your.package;
}

your.package是您的Zhang类所在的包,以及需要与它一起使用的所有其他类。

你的类也必须被声明public


一旦你看到它是这样工作的,你可能想尝试降低你的类的可见性,使用

opens your.package;

反而。


推荐阅读