我得到了上面的错误和下面是我的代码我做错了什么?错误引用到数据源.什么是问题?
public class DBConnector {
private Connection dbConn = null;
private FileLogger fileLogger = new FileLogger("./logs/logfile.txt");
private ConfigurationReader conf = new ConfigurationReader("./config.sys");
private Logger logger = fileLogger.getLogger();
/**
* Attempts to establish a connection with a test MySQL database.
*/
public DBConnector() {
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser(conf.getConfigString("username"));
dataSource.setPassword(conf.getConfigString("password"));
dataSource.setServerName(conf.getConfigString("dbhost"));
dataSource.setDatabaseName(conf.getConfigString("dbname"));
dataSource.setPort(conf.getConfigInt("dbport"));
try {
dbConn = dataSource.getConnection();
logger.info("Succesful connection with database!");
} catch (Exception ex) {
logger.info("Error: DBConnector(): problem creating database connection");
}
logger.info("Database connection = " + dbConn);
}
2条答案
按热度按时间7cwmlq891#
我得到了同样的错误(在Java 9或更高版本上)。对我来说,问题是由于我的模块(访问Referenceable的模块)的
module-info.java
中缺少requires java.naming;
指令。添加此指令修复了它:此模块适用于Java Naming and Directory Interface (JNDI)API,如Module java.naming的Javadoc中所述。
fzsnzjdm2#
正如Sander Mak在这里解释的那样,当你的代码依赖于没有模块描述符的东西,并且这个依赖的依赖性是无法解析的时候,这种情况通常会发生(例如,你正在使用Hibernate,它没有模块描述符,但是它需要java.naming)。
在这种情况下,Sander建议使用以下方法将传递依赖项添加到模块图中,而不是用传递依赖项污染您自己的模块描述符
这样,当Hibernate将来有了自己的模块描述符时,您只需删除上面的行,在您的模块info.java中只保留您的直接依赖项。