NetBeans MySQL驱动程序连接错误



我正在开发一个程序与NetBeans连接到MySQL在线服务器使用PHPMyadmin,通过NetBeans运行程序,它工作完美,但当我试图运行它只是使用Jar文件在项目的"dist"文件夹扔给我一个错误,我将在结束时发布。

我的问题是:

为什么这种情况发生在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内部和外部都成功的简单测试。我使用了常规的java (Ant)项目,只是添加了MySQL JDBC驱动程序作为库。(右键单击项目窗口中的Libraries图标,添加库并从列表中选择它。)在MySqlCheck包中添加以下单个文件作为MySqlCheck。将localhost更改为适合您的正确主机,将某人更改为您的用户名,mypasswd,将test更改为您拥有的一些数据库,并将Untitled更改为一些用于测试的小表。由于连接url在本例中是硬编码的,如果您从命令行参数,系统属性或其他可能在Netbeans内部与外部不同的东西中获取连接信息,它可能会解决问题。

如果正确构建,dist子目录将是jar, lib子目录将是mysql-connector-java-5.1.23-bin.jar。如果在dist中移动jar,则总是需要移动lib子目录及其jar。只是递归地压缩整个dist目录可能是最好的方法。如果您移动到不同的主机,localhost字符串需要更改为实际的主机。此外,用户权限和网络设置可能会导致问题,可能需要管理员来解决。

项目也可以从这里克隆:

https://github.com/wshackle/MysqlCheck

打开终端并输入:

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());
        }
    }
}

相关内容

  • 没有找到相关文章