【发布时间】:2013-07-19 12:07:59
【问题描述】:
我编写了一个小 shell 脚本来调用一个 java 类,该类又调用 mysql db 并返回一些结果集。
我的 Shell 脚本:
CP="."
CP=$CP:/home/lib/mysql-connector-java-5.1.12-bin.jar
export CP
java -cp $CP com.util.Hello
而我的java代码如下,
Hello.Java:
public static void main(String[] str) {
Connection conn = null;
try
{
String userName = "root";
String password = "root";
String url = "jdbc:mysql://localhost:3306/test";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");
Statement s = conn.createStatement ();
s.executeQuery ("select * from users");
ResultSet rs = s.getResultSet ();
int count = 0;
while (rs.next ())
{
System.out.println (count + " rows were retrieved");
count++;
}
rs.close ();
s.close ();
}
catch (Exception e) {
System.err.println ("Cannot connect to database server")
}
}
当我从 linux 服务器执行 shell 脚本时,出现以下错误,
无法连接到我在 java 类中打印的数据库服务器
System.err.println ("Cannot connect to database server")
可以帮助我如何从 shell 脚本加载 mysql jar 吗?
以及如何在运行我的 java 类时使用它?
如果我从 war 文件运行这个类,它就可以工作了。
提前致谢。
【问题讨论】:
-
如果您没有捕获然后丢弃异常,那么判断问题所在会容易得多。做这个。删除 try/catch 块,在主方法声明中添加“抛出异常”,再次运行,然后发布整个堆栈跟踪(错误消息)。
-
同时删除 'newInstance ()' 部分。您只需要使用以下方法加载类: Class.forName ("com.mysql.jdbc.Driver");