gpt4 book ai didi

java - 如何在 Eclipse 中制作自定义编译器警告?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:43 30 4
gpt4 key购买 nike

我正在试验 BoneCP作为 DBCP 的连接池替代方案。我将 bonecp-0.8.0rc-1.jar 添加到我的运行时类路径,并将示例页面中的代码复制粘贴到我的测试驱动程序中:

Connection connection = null;
BoneCP connectionPool;
try {
Class.forName(config.getDatabaseLogger().getJDBCDriver());

BoneCPConfig boneConfig = configureBoneCP(config);

connectionPool = new BoneCP(boneConfig);

connection = connectionPool.getConnection(); // fetch a connection
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

行上写着:

connectionPool = new BoneCP(boneConfig);

Eclipse (Juno) 给我一个编译器警告:

Resource leak: 'connectionPool' is never closed

然后它给了我一个选项“将@SuppressWarnings‘资源’添加到 newConnectionManager”(newConnectionManager() 引用它包含的类)。

这怎么可能?Eclipse 如何知道关于 BoneCP 对象的任何信息,以及它如何知道它必须关闭?这是 BoneCP 库附带的某种“自定义警告”吗?如果是这样,我如何向我自己的项目添加/注释代码以帮助警告下游开发人员他们没有正确使用我的库?

最佳答案

警告是由这条语句引起的:

connection = connectionPool.getConnection();

getConnection() 方法返回类型为 java.sql.Connection 的对象它实现了 java.lang.AutoCloseable自 Java 7 起。当 Eclipse 无法确定实现 java.io.Closeablejava.lang.AutoCloseable 的资源是否被所有可能的代码关闭时,它会生成此警告路径。

关于java - 如何在 Eclipse 中制作自定义编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631199/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com