0

可能我在问一个常见问题,但当我尝试通过 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");
       }
   }
}
4

1 回答 1

9

如果没有完整的异常消息,这是一个猜测,但您可能会收到错误"java.lang.NoClassDefFoundError: javax/resource/ResourceException",这意味着您缺少所需的依赖connector-api-1.5.jar项(包含在 Jaybird 发行版的 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 发行说明的分发包部分

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

于 2015-03-21T09:39:27.373 回答