我正在使用NetBeans开发一个程序,该程序使用PHPMyadmin连接到MySQL在线服务器,通过NetBeans运行该程序,它运行得很好但是当我尝试运行它时只使用项目的“dist”文件夹中的Jar文件给我一个错误,我会在最后发布它。
我的问题是:
为什么NetBeans中会发生这种情况,但不能使用dist Jar文件?
如何在不使用NetBeans的情况下在其他计算机上运行它只需双击Jar文件? (我刚刚在另一台没有NetBeans 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)
...
...
...
答案 0 :(得分:0)
这是我在Netbeans内部和外部都取得成功的简单测试。我使用了常规的java(Ant)项目,只是我将MySQL JDBC驱动程序添加为库。 (右键单击项目窗口中的Libraries图标,添加库并从列表中选择它。)在mysqlcheck包中添加以下单个文件MySqlCheck。将localhost更改为正确的主机,将某人更改为您的用户名,mypasswd,测试您拥有的某个数据库,并将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());
}
}
}