Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多模块java项目中使用lib commons-dbcp2(BasicDataSource类)时出错_Java_Database_Java Module - Fatal编程技术网

在多模块java项目中使用lib commons-dbcp2(BasicDataSource类)时出错

在多模块java项目中使用lib commons-dbcp2(BasicDataSource类)时出错,java,database,java-module,Java,Database,Java Module,我想使用BasicDataSource进行数据库互连。在“经典”java项目(没有模块)中,一切都正常工作,但是当我创建多模块项目时,在编译时出现了一些错误 Error:(..) java: cannot access javax.management.MBeanRegistration 我以前从未遇到过这样的错误。有趣的是,当我试图调用BasicDataSource类的任何方法时,就会发生错误 Class.forName("com.mysql.cj.jdbc.Driver&

我想使用BasicDataSource进行数据库互连。在“经典”java项目(没有模块)中,一切都正常工作,但是当我创建多模块项目时,在编译时出现了一些错误

Error:(..) java: cannot access javax.management.MBeanRegistration
我以前从未遇到过这样的错误。有趣的是,当我试图调用BasicDataSource类的任何方法时,就会发生错误

    Class.forName("com.mysql.cj.jdbc.Driver");
    BasicDataSource basicDataSource = new BasicDataSource();
    basicDataSource.setUsername("username"); //Error occurs here 
lib的文件说:

DBCP 2.7.0仅在Java 8(JDBC 4.2)下编译和运行

但是:

在Java8及以上版本上运行的应用程序应使用DBCP2.7.0二进制文件

参考:

module-info.java:

module BusinessLogic {
    requires mysql.connector.java;
    requires java.sql;
    requires com.fasterxml.jackson.databind;

   requires commons.dbcp2;
   requires commons.pool2;
   requires commons.logging;
}
    module DBModule{
        requires mysql.connector.java;
        requires java.sql;
        requires commons.dbcp2;
        requires java.management;
    }

因此,我尝试使用二进制文件,但没有帮助,我如何才能避免这个问题?

解决方案:有必要在模块信息中指定另一个依赖项:

需要java.management

或删除模块信息

module-info.java:

module BusinessLogic {
    requires mysql.connector.java;
    requires java.sql;
    requires com.fasterxml.jackson.databind;

   requires commons.dbcp2;
   requires commons.pool2;
   requires commons.logging;
}
    module DBModule{
        requires mysql.connector.java;
        requires java.sql;
        requires commons.dbcp2;
        requires java.management;
    }

解决方案:需要在模块信息中再指定一个依赖项:

需要java.management

或删除模块信息

module-info.java:

module BusinessLogic {
    requires mysql.connector.java;
    requires java.sql;
    requires com.fasterxml.jackson.databind;

   requires commons.dbcp2;
   requires commons.pool2;
   requires commons.logging;
}
    module DBModule{
        requires mysql.connector.java;
        requires java.sql;
        requires commons.dbcp2;
        requires java.management;
    }

BasicDataSource
在哪个库中?什么版本?您在新方式中使用的Java版本是什么?您可能应该使用“java模块”标记而不是“模块”。很抱歉,BasicDataSource不是lib,它是lib()中的一个类。Lib版本2.7.0。爪哇12。感谢您对“java模块”的评论。那么您正在使用?我正在尝试隔离我需要做的事情,这会造成相同的情况。是的,我正在使用itOh,我找到了解决方案,非常感谢!有必要在模块信息“requires java.management;”中再指定一个依赖项
BasicDataSource
位于哪个库中?什么版本?您在新方式中使用的Java版本是什么?您可能应该使用“java模块”标记而不是“模块”。很抱歉,BasicDataSource不是lib,它是lib()中的一个类。Lib版本2.7.0。爪哇12。感谢您对“java模块”的评论。那么您正在使用?我正在尝试隔离我需要做的事情,这会造成相同的情况。是的,我正在使用itOh,我找到了解决方案,非常感谢!有必要在模块信息“requires java.management;”中再指定一个依赖项。