java - Jaybird java.lang.NoClassDefFoundError

标签 java jdbc firebird jaybird

可能我问的是一个常见问题,但我真的不明白我做错了什么,以及当我尝试通过 Jaybird 连接我的 Firebird DB 时我可能会忘记什么。我已将 Jaybird.jar 添加到我的 Java 构建路径中,但仍然收到错误 java.lang.NoClassDefFoundError

这是我的简单代码:

public class DBHelper {


    public void tryConnect() {
       try {
           Class.forName("org.firebirdsql.jdbc.FBDriver");
       } catch (ClassNotFoundException cnfe) {
           System.out.println(cnfe.toString());
           System.out.println("org.firebirdsql.jdbc.FBDriver not found");
       }
   }
}

最佳答案

如果没有完整的异常消息,这只是猜测,但您可能会收到错误“java.lang.NoClassDefFoundError:javax/resource/ResourceException”,这意味着您缺少所需的依赖项connector-api-1.5.jar(包含在 Jaybird 发行版 zip 的 lib 文件夹中)。

您有两个选择:

  1. connector-api-1.5.jar 添加到类路径,或者
  2. 改用 jaybird-full-2.2.7.jar(它包含 connector-api-1.5.jar 中的类)。

部署到应用程序服务器时不需要这样做,因为应用程序服务器已经提供了连接器 API。您应该仅在运行独立应用程序时使用jaybird-full-2.2.7.jar;部署到应用程序服务器时,javax.resource 包中存在的类可能会阻止类加载器使用您的 jar/war 文件。

另请参阅Jaybird release notes, section Distribution package .

全面披露:我是 Jaybird 的开发者

关于java - Jaybird java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157312/

相关文章:

java - 集成 openid connect 进行 SPA 应用的最佳方式

java - Spring hibernate java.sql.SQLException : The result set is closed

java - 使用时间戳的准备语句需要更多纳秒

global - Firebird 全局临时表(GTT),触摸其他表?

sql - 获取从一对多关系 Firebird 加入的最后记录

java - 从jsp + Spring调用几个方法

java - 如何从文本文件中读取我的输出?

java - Factory.Folder.fetchInstance 方法不适用于路径

jdbc - Elastic Search JDBC River 插件 SQL Server 集成安全性

java - 具有限制行数的结果集 jdbc 驱动程序