库,同时确保将库 .jar -6ren">
gpt4 book ai didi

java - 在其他计算机上运行时导出的 .jar 给出 "No suitable driver found for jdbc"

转载 作者:行者123 更新时间:2023-11-30 08:45:14 25 4
gpt4 key购买 nike

我使用 IntelliJ IDEA 制作了一个小而简单的程序来更新 MSSQL 数据库中一些新列的内容。我下载了外部库 sqljdbc4.jar 并将其添加到项目设置 > 库,同时确保将库 .jar 添加到输出布局。通过在我使用的 Mac 上解压缩文件,我已经确认 sqljdbc4.jar 包含在导出的 .jar 文件中。

该程序在我的 Mac 上运行得很好,但是当我将 .jar 复制到同事的计算机上,或尝试在 Windows 中的 Parallels 上运行时,我们只得到一个 ClassNotFound 异常,并带有以下注释“没有合适的驱动程序找到 jdbc:sqlserver[服务器详细信息]”

作业代码如下:

//[....]
private final static String SQL_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

public SQLConnector(){

}
public boolean updateDatabase(String[] results, boolean inhouse){
Connection conn;

try{
Class.forName(SQL_DRIVER);
} catch (ClassNotFoundException e){
JOptionPane.showMessageDialog(null, "ERROR: " + e.getMessage(), "Exception type: ClassNotFoundException", JOptionPane.ERROR_MESSAGE);
return false;
}
//[...]

ClassNotFound 异常被触发。有任何想法吗?如果需要一些额外的信息,请随时提出要求。

编辑:我将 sqljdbc4.jar 保存在/Library/Java/Extensions 中,如果我从那里删除它,那么程序也会失败,并在我的 Mac 上出现同样的错误。即使我将 .jar 文件存储在项目的/bin/- 文件夹中,并确保该文件是作为库添加的文件。从 Extensions 中删除 jdbc-jar 后,即使如此,该程序在从 IntelliJ 执行时仍然可以正常运行。

最佳答案

我想通了。问题出在工件的设置中。在指定从模块创建 JAR 的详细信息时,我之前选择了“提取到目标 JAR”,但正确的选项似乎是“复制到输出目录并通过 list 链接”。这样做会产生 list 已存在的错误,因此我必须手动进入并删除“src”和“out > production > [project name]”中的 META-INF 文件夹。然后允许 IntelliJ 重新构建工件。这导致将 sqljdbc4.jar 文件添加到我自己的 JAR 旁边,而不是将 sqljdbc4.jar 文件复制到我自己的 JAR。

不过,我不知道这两个选项之间的主要区别是什么......

关于java - 在其他计算机上运行时导出的 .jar 给出 "No suitable driver found for jdbc",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391211/

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