JAVA_HOME=/usr/java/j2sdk1.4.1_01
CLASSPATH=$CLASSPATH:/usr/java/j2sdk1.4.1_01/lib/tools.jar:/usr/java/j2sdk1.4.1_01/lib/dt.jar:/usr/java/j2sdk1.4.1_01/lib:/usr/java/j2sdk1.4.1_01/jre/lib:/usr/java/j2sdk1.4.1_01/lib/mysql-connector-java-3.0.6-stable-bin.jar
PATH=$PATH:/bin:/usr/bin:/usr/local:/usr/local/bin:/usr/java/j2sdk1.4.1_01/bin:/usr/java/j2sdk1.4.1_01/jre/bin
export JAVA_HOME CLASSPATH PATH
程序源代码如下:
import java.lang.*;
import java.sql.*;
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
try
{
String userName = "root";
String password = "";
String url = "jdbc:mysql://localhost/tryjava";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");
}
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new SQLException(e.toString());
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
我的源程序在/root下,为Connect.java。
在shell下编译:
#javac Connect.java
结果出现如下错误:
Connect.java:55:error:Exception "java.sql.SQLException" is not catched and does not appear in throws list [JLS 8.4.4]
这个问题这些天一直困着我,我发过帖子,很多高手也回应了,我上面的环境变量等觉得就是按高手们的说法写的,可是问题究竟在哪里呢?再次谢谢大家。只要问题解决,分数不成问题!!!
20 个解决方案
#1
另外,我的linux是redhat7.2的,mysql是3。23。41的
#2
这段程序不是你整个的源代码吧?
#3
这是因为你没有捕获(catch)这类错误,却要抛出(thrown)这类错误所造成的,我上次只是告诉你要抛出系统捕获的错误告诉你要添加throw new SQLException(e.toString())一句而没有告诉你要改上面的catch,呵呵。
解决办法有两种:
throw new SQLException(e.toString());
改为
throw new Exception(e.toString());
或者catch (Exception e)
改为catch(SQLException e)
解决办法有两种:
throw new SQLException(e.toString());
改为
throw new Exception(e.toString());
或者catch (Exception e)
改为catch(SQLException e)
#4
把下面的语句去掉:
throw new SQLException(e.toString());
throw new SQLException(e.toString());
#5
好,我试一试。叶三耿,太谢谢你了!:)
#6
呵呵,不客气,不要给我分,你也很不容易的,解决了问题就好。
#7
UP
#8
叶三耿,我把catch (Exception e)改为catch(SQLException e),错误变为:
Connect.java:50:error:Exception "java.sql.InstantiationException"
is not catched and does not appear in throws list [JLS 8.4.4]
我看见一些代码例子中的下面这句:
Class.forName("com.mysql.jdbc.Driver").newInstance();
没有“.newInstance()”,是不是这里有问题?不过有的例子又有,什么原
因呢?
Connect.java:50:error:Exception "java.sql.InstantiationException"
is not catched and does not appear in throws list [JLS 8.4.4]
我看见一些代码例子中的下面这句:
Class.forName("com.mysql.jdbc.Driver").newInstance();
没有“.newInstance()”,是不是这里有问题?不过有的例子又有,什么原
因呢?
#9
xiaozhenchun(xzc)驱动的版本和mysql的版本不适应!
#10
我看了mm和connector/J的区别,就是把“Class.forName"com.mysql.jdbc.Driver").newInstance();“
的com.mysql.jdbc.Driver改为"mm.。。。。。。。"就好像可以了。
的com.mysql.jdbc.Driver改为"mm.。。。。。。。"就好像可以了。
#11
活着的穿马甲中,"驱动的版本和mysql的版本不适应!"我的connector/J是最新的啊?
难道mysql太老?
难道mysql太老?
#12
咱们先不管那么多,你先采用我上面告诉你的第一种改法,看看系统说什么,也就是catch 和throw 部分改为如下:
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
系统反馈什么你再告诉我。
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
系统反馈什么你再告诉我。
#13
叶三耿,我改了,呵呵(苦笑),错误变为:
Connect.java:58:error:Exception "java.lang.Exception"
is not catched and does not appear in throws list [JLS 8.4.4]
正是琢磨不定,是不是还要import什么???
Connect.java:58:error:Exception "java.lang.Exception"
is not catched and does not appear in throws list [JLS 8.4.4]
正是琢磨不定,是不是还要import什么???
#14
环境变量的设置我觉得应该没有问题了
#15
又没有搞错?方法头都没有抛出异常,方法中竟然能够抛出?
public static void main (String[] args)
...
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
...
如果想跑出,至少在方法头中作如下处理:
public static void main (String[] args) throws Exception{
...
public static void main (String[] args)
...
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
...
如果想跑出,至少在方法头中作如下处理:
public static void main (String[] args) throws Exception{
...
#16
是版本问题吗?大家说说看呀
#17
你的源程序本身就有问题,应该改成:
(我用的org.gjt.mm.mysql.Driver与你的驱动程序不一样,不过我已经试通了!)
import java.lang.*;
import java.sql.*;
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
try
{
String userName = "root";
String password = "";
String url = "jdbc:mysql://localhost/tryjava";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");
}
catch (Exception e)//这样测试把一切错误都捕捉并进行处理了
{
System.err.println ("Cannot connect to database server");
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
(我用的org.gjt.mm.mysql.Driver与你的驱动程序不一样,不过我已经试通了!)
import java.lang.*;
import java.sql.*;
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
try
{
String userName = "root";
String password = "";
String url = "jdbc:mysql://localhost/tryjava";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");
}
catch (Exception e)//这样测试把一切错误都捕捉并进行处理了
{
System.err.println ("Cannot connect to database server");
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
#18
你这样到是省事了!
我觉得既然抛出异常,当然要具体异常具体分析
我觉得既然抛出异常,当然要具体异常具体分析
#19
估计是mysql-connector-java-3.0.6-stable-bin.jar的驱动和MySQL的版本不匹配,还是看看它里面有没有文档,我也遇到过这样的问题,用com.mysql.jdbc.Driver驱动,能连上数据库,但查不出数据,报错说找不到列,后来换了驱动就好了!
#20
wylove(阿刚),你说得对,在main后面加上throws exception就可以了.真是谢谢大家了!!!觉得分不够的尽管说!!!
#21
#1
另外,我的linux是redhat7.2的,mysql是3。23。41的
#2
这段程序不是你整个的源代码吧?
#3
这是因为你没有捕获(catch)这类错误,却要抛出(thrown)这类错误所造成的,我上次只是告诉你要抛出系统捕获的错误告诉你要添加throw new SQLException(e.toString())一句而没有告诉你要改上面的catch,呵呵。
解决办法有两种:
throw new SQLException(e.toString());
改为
throw new Exception(e.toString());
或者catch (Exception e)
改为catch(SQLException e)
解决办法有两种:
throw new SQLException(e.toString());
改为
throw new Exception(e.toString());
或者catch (Exception e)
改为catch(SQLException e)
#4
把下面的语句去掉:
throw new SQLException(e.toString());
throw new SQLException(e.toString());
#5
好,我试一试。叶三耿,太谢谢你了!:)
#6
呵呵,不客气,不要给我分,你也很不容易的,解决了问题就好。
#7
UP
#8
叶三耿,我把catch (Exception e)改为catch(SQLException e),错误变为:
Connect.java:50:error:Exception "java.sql.InstantiationException"
is not catched and does not appear in throws list [JLS 8.4.4]
我看见一些代码例子中的下面这句:
Class.forName("com.mysql.jdbc.Driver").newInstance();
没有“.newInstance()”,是不是这里有问题?不过有的例子又有,什么原
因呢?
Connect.java:50:error:Exception "java.sql.InstantiationException"
is not catched and does not appear in throws list [JLS 8.4.4]
我看见一些代码例子中的下面这句:
Class.forName("com.mysql.jdbc.Driver").newInstance();
没有“.newInstance()”,是不是这里有问题?不过有的例子又有,什么原
因呢?
#9
xiaozhenchun(xzc)驱动的版本和mysql的版本不适应!
#10
我看了mm和connector/J的区别,就是把“Class.forName"com.mysql.jdbc.Driver").newInstance();“
的com.mysql.jdbc.Driver改为"mm.。。。。。。。"就好像可以了。
的com.mysql.jdbc.Driver改为"mm.。。。。。。。"就好像可以了。
#11
活着的穿马甲中,"驱动的版本和mysql的版本不适应!"我的connector/J是最新的啊?
难道mysql太老?
难道mysql太老?
#12
咱们先不管那么多,你先采用我上面告诉你的第一种改法,看看系统说什么,也就是catch 和throw 部分改为如下:
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
系统反馈什么你再告诉我。
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
系统反馈什么你再告诉我。
#13
叶三耿,我改了,呵呵(苦笑),错误变为:
Connect.java:58:error:Exception "java.lang.Exception"
is not catched and does not appear in throws list [JLS 8.4.4]
正是琢磨不定,是不是还要import什么???
Connect.java:58:error:Exception "java.lang.Exception"
is not catched and does not appear in throws list [JLS 8.4.4]
正是琢磨不定,是不是还要import什么???
#14
环境变量的设置我觉得应该没有问题了
#15
又没有搞错?方法头都没有抛出异常,方法中竟然能够抛出?
public static void main (String[] args)
...
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
...
如果想跑出,至少在方法头中作如下处理:
public static void main (String[] args) throws Exception{
...
public static void main (String[] args)
...
catch (Exception e)
{
// System.err.println ("Cannot connect to database server");
throw new Exception(e.toString());
}
...
如果想跑出,至少在方法头中作如下处理:
public static void main (String[] args) throws Exception{
...
#16
是版本问题吗?大家说说看呀
#17
你的源程序本身就有问题,应该改成:
(我用的org.gjt.mm.mysql.Driver与你的驱动程序不一样,不过我已经试通了!)
import java.lang.*;
import java.sql.*;
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
try
{
String userName = "root";
String password = "";
String url = "jdbc:mysql://localhost/tryjava";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");
}
catch (Exception e)//这样测试把一切错误都捕捉并进行处理了
{
System.err.println ("Cannot connect to database server");
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
(我用的org.gjt.mm.mysql.Driver与你的驱动程序不一样,不过我已经试通了!)
import java.lang.*;
import java.sql.*;
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
try
{
String userName = "root";
String password = "";
String url = "jdbc:mysql://localhost/tryjava";
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");
}
catch (Exception e)//这样测试把一切错误都捕捉并进行处理了
{
System.err.println ("Cannot connect to database server");
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
#18
你这样到是省事了!
我觉得既然抛出异常,当然要具体异常具体分析
我觉得既然抛出异常,当然要具体异常具体分析
#19
估计是mysql-connector-java-3.0.6-stable-bin.jar的驱动和MySQL的版本不匹配,还是看看它里面有没有文档,我也遇到过这样的问题,用com.mysql.jdbc.Driver驱动,能连上数据库,但查不出数据,报错说找不到列,后来换了驱动就好了!
#20
wylove(阿刚),你说得对,在main后面加上throws exception就可以了.真是谢谢大家了!!!觉得分不够的尽管说!!!