我使用Ubuntu&净豆子。我从Netbeans向导中制作了一个java桌面数据库应用程序。我使用MySQL数据库,我可以打开&从其服务运行查询→数据库。当我运行它时,我得到了下面的异常。当我清洁&构建项目运行jar文件,相同的Exception。我用同样的机器双启动方式安装了Windows,也有同样的MySQL数据库&Java语言当我使用UbuntuNetbeans运行我制作的jar文件时,它完全可以在Windows中运行并显示数据库数据。我也做了另一种方式,我在Windows Netbeans中使用相同的数据库制作了相同的java应用程序,它在Netbeans和jar文件中都能完美运行。但当我尝试在Ubuntu中运行它时,无论是在Netbeans&jar文件显示以下异常。
[TopLink Info]:2012.01.29 11:16:58.898--ServerSession(285416048)--TopLink,版本:Oracle TopLink Essentials-2.0.1(Build b09d fcs(12/06/2007))2012年1月29日上午11:16:59 org.jdesktop.application.1run严重:应用程序类customercordsu。CustomerRecordsUApp无法启动本地异常堆栈:异常[TOPLINK-4002](Oracle TOPLINK Essentials-2.0.1(内部版本b09d fcs(2007年6月12日)):Oracle.TOPLINK.Essentials.exceptions.
最后一个成功发送到服务器的数据包是0毫秒前。驱动程序尚未从服务器接收到任何数据包。错误代码:0在oracle.toplink.nessentials.exceptions.DatabaseException.sqlException(DatabaseException.java:305)
... lot of more
引起原因:java.net.SocketException:无法连接到SOCKS代理:连接被拒绝位于java.net.SocksSocketImpl.connect(SocksSocketImpl.java:427)
... lot of more
以下是"my.cnf"文件删除注释的一部分
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
skip-external-locking
bind-address = 127.0.0.1
下面是persistence.xml文件的一部分
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/MyBusinessRecords"/>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="password"/>
Netbeans向导使用JPA;顶部链接。我用纯Java制作了一个没有向导的程序,它在Ubuntu中运行得很好,并显示了数据库数据。该程序在下面。上面和下面都使用相同的Java MySQL连接器.jar。
public static void main(String[] args) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
int id = 0;
String name = null;
try {
String url = "jdbc:mysql://localhost:3306/MyBusinessRecords";
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(url, "root", "5843");
if (con != null) {
System.out.println("A database connection has been establised!");
st = con.createStatement();
rs = st.executeQuery("select * from COUNTRIES");
while(rs.next()){
id = rs.getInt(1);
name = rs.getString(2);
System.out.println("id = " + id + " Name = " + name);
}
}
} catch (Exception e) {
System.out.println("Problem" + e.toString());
} finally {
if (con != null) {
try {
rs.close();
st.close();
con.close();
} catch (Exception e) {
System.out.println(e.toString());
}
con = null;
}
}
}
这是我的系统
java版本"1.7.0_01"Java HotSpot(TM)64位服务器虚拟机(内部版本21.1-b02,混合模式)Ubuntu 11.10。操作系统类型64位MySQL版本-MySQL 5.1.58-1ubuntu1MySQL客户端5.1.58版套接字:/var/run/mysqld/mysqld.sock
我读了问答;这个网站上有15个以上的人有同样的问题,但现在那个人帮了我。请帮帮我。
String url = "jdbc:mysql://localhost:3306/MyBusinessRecords";
引起原因:java.net.SocketException:无法连接到SOCKS代理:不存在的SOCKS代理绑定地址=127.0.0.1您可以尝试bind-address=0.0.0.0或jdbc:mysql://127.0.0.1:3306/MyBusinessRecords"
试试Java 1.6。我遇到了类似的问题,改回Java 1.6(我已经升级到1_7),问题就消失了。1_7可能需要不同的toplink或OracleDriver版本。