【问题标题】:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver after creating a jarjava.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver 创建 jar 后
【发布时间】:2019-08-19 14:49:36
【问题描述】:

我已经在我的程序中建立了一个数据库连接,但是在创建一个 jar 程序后它抛出了一个

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

看起来程序没有看到我已安装并添加到工件中的 jdbc 驱动程序:

我已尝试更改版本更改链接以在 JDBC 中查找类名,但我发现了与我之前使用过的相同的链接,该链接在 intelij 中有效,但在 jar 中无效

我正在使用一个代码进行连接

package howareyoufeeling.database;

import java.sql.*;

public class DatabaseOperations {
    static Statement statement;

    public static void connectWithAzureDatabase() {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String connectionUrl =
                "jdbc:sqlserver://howareyoufeeling.database.windows.net:1433;" +
                        "database=HowAreYouFeeling;" +
                        "user=wikimmax@howareyoufeeling;password=********;" +
                        "encrypt=true;trustServerCertificate=false;" +
                        "hostNameInCertificate=*.database.windows.net;loginTimeout=30;";
        try {
            Connection connection = DriverManager.getConnection(connectionUrl);
            System.out.println("Successfull DB connection " + connection.getSchema());
            statement = connection.createStatement();

        } catch (SQLException e) {
            e.printStackTrace();

        }
    }
    public static void sendDataQuery(String query){
        try {
            statement.execute(query);
        } catch (SQLException e) {
            e.printStackTrace();

        }
    }
}

看起来依赖项不在 jar 文件中,但我通过反编译和包含驱动程序的文件大小匹配来检查它

请帮忙

【问题讨论】:

  • 你是使用 Gradle 还是 Maven 来管理依赖关系?
  • 我正在使用 maven
  • 你能发布你的 pom.xml 吗?

标签: java sql-server jdbc


【解决方案1】:

如果您在运行时遇到该异常,这是一个打包问题。

您的可执行 JAR 需要在其中构建所有依赖项。有一个 Maven 插件可以为您完成。

我建议将您的数据库配置移到代码之外,以便您可以更轻松地对其进行修改。

【讨论】:

  • 将数据库配置移到外部是什么意思?加上这很奇怪,因为我也尝试将 jdbc 直接添加为 jar,在这种情况下它应该编译。
  • 如果我在 Spring Boot 中编写这个应用程序,数据源的配置将在 application.yml 中完成。我会使用 Hikari 数据源连接池。我根本不会写你的 DatabaseUtils 类。
【解决方案2】:

问题已解决。 主要的错误是我试图构建一个 jar 作为应用程序而不是 Javafx 应用程序和数据库 jar 文件在我的构建 jar 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2013-06-21
    • 2020-01-11
    • 1970-01-01
    • 2012-01-27
    • 2016-02-04
    • 2018-01-08
    相关资源
    最近更新 更多