当前位置: 代码迷 >> java >> NetBeans MySQL驱动程序连接错误dist Jar文件
  详细解决方案

NetBeans MySQL驱动程序连接错误dist Jar文件

热度:91   发布时间:2023-07-25 19:11:54.0

我正在使用NetBeans开发一个程序,该程序使用PHPMyadmin连接到MySQL在线服务器,并通过NetBeans运行该程序,效果很好,但是当我尝试仅使用proyect的“ dist”文件夹中的Jar文件运行该程序时,错误,我将在最后发布。

我的问题是:

为什么在NetBeans工程中会发生这种情况,但在dist Jar文件中却没有?

在不使用NetBeans的情况下,只需双击Jar文件,如何在其他计算机上运行它? (我只是在没有NetBean IDE的另一台计算机上下载了最新的Java版本,但出现了无法连接到com jdbc mysql驱动程序的错误)。

谢谢您的支持。

这是一个错误:

Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

Java.net.ConnectException

MESSAGE: Connection refused: connect

STACKTRACE:

Java.net.ConnectException: Connection refused: connect
At.java.net.DualStackPlainSocketImpl.connect0(Native Method)

At java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)

At java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)

At java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)

At java.net.AbstractPlainSocketImpl.connect (Unknown Source)

At java.PlainSocketImpl.connect(Unknown Source)

At java.net.SocksSocketImpl.connect(Unknown Source)

At java.net.Socket.connect(Unknown Source)

At java.net.Socket<init>(Unknown Source)

At com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)

At com.mysql.jdbc.MysqllO.<init>(MysqlIIO.java:271)

...
...

...

这是我的简单测试,在Netbeans内部和外部均成功。 除了将MySQL JDBC驱动程序添加为库之外,我使用了常规的Java(Ant)项目。 (在项目窗口中右键单击Libraries图标,添加库并从列表中选择它。)将以下单个文件作为MySqlCheck添加到mysqlcheck包中。 将localhost更改为适合您的正确主机,将某人更改为您的用户名,mypasswd,对您拥有的某些数据库进行测试,并为一些对测试有用的小表取消标题。 由于此示例中的连接URL是硬编码的,因此,如果您从命令行参数,系统属性或Netbeans内部与外部的其他内容中获取连接信息,则可能会解决问题。

如果在dist子目录中正确构建,它将是您的jar,在lib子目录中将是mysql-connector-java-5.1.23-bin.jar。 如果将jar移到dist中,则始终也需要同时移动lib子目录及其jar。 仅仅递归压缩整个dist目录可能是最好的方法。 如果移动到其他主机,则localhost字符串需要更改为实际主机。 另外,用户权限和网络设置也可能会引起问题,管理员可能必须修复该问题。

该项目也可以从这里克隆:

要测试,请打开一个终端并输入:

java -jar dist / yourproject.jar

package mysqlcheck;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

/**
 *
* @author Will Shackleford {@literal <wshackle@gmail.com> }
 */
public class MysqlCheck {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    Connection conn = null;
    try {
        conn
                = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?"
                        + "user=somebody&password=mypasswd");
        ResultSet rs = conn.createStatement().executeQuery("select * from Untitled;");
        ResultSetMetaData meta = rs.getMetaData();
        for (int i = 0; i < meta.getColumnCount(); i++) {
            System.out.println("i = " + i);
            System.out.println("columnName=" + meta.getColumnName(i + 1));
            rs.first();
            do {
                System.out.println("colunmString=" + rs.getString(i + 1));
            } while (rs.next());
        }
        } catch (SQLException ex) {
            // handle any errors
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        } catch (Exception ex) {
            // handle any errors
            System.out.println("SQLException: " + ex.getMessage());
        }
    }
}
  相关解决方案