Search code examples
javadatabasejava-module

Error using lib commons-dbcp2 (BasicDataSource class) in multi module java project


I want to use BasicDataSource for DB interconnection. In the "classic" java project (without modules) everything works correctly, but when i create multi module project some error occured at the compile time.

Error:(..) java: cannot access javax.management.MBeanRegistration

I have never met such errors before. Intersting then error occurs when i try to call any method of the BasicDataSource class

    Class.forName("com.mysql.cj.jdbc.Driver");
    BasicDataSource basicDataSource = new BasicDataSource();
    basicDataSource.setUsername("username"); //Error occurs here 

Docs for lib says that:

DBCP 2.7.0 compiles and runs under Java 8 only (JDBC 4.2)

But:

DBCP 2.7.0 binaries should be used by applications running on Java 8 and above.

Ref: https://commons.apache.org/proper/commons-dbcp/

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;
}

So, i tried to use binaries but it didn't help, how can i avoid this problem?


Solution

  • Solution: It's necessary to specify one more dependency in module-info:

    requires java.management;

    or delete module-info.

    module-info.java:

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