我的代码中出现cannot find symbol
错误。有谁知道什么会导致这个问题?
代码是:
// Register JDBC driver
Class.forName("net.sourceforge.jtds.jdbc.Driver");
,错误输出为:
blah.java:314: cannot find symbol
symbol : method forName(java.lang.String)
location: class java.lang.Class
Class.forName("net.sourceforge.jtds.jdbc.Driver");
^
1 error
//STEP 1. Import required packages
import java.sql.*;
public class JDBCExample {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.sql.jdbc.Driver";
static final String DB_URL = (":jdbc:jtds:sqlserver://localhost:1433/tempdb" );
// Database credentials
static final String USER = "username";
static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("net.sourceforge.jtds.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
//STEP 4: Execute a query
System.out.println("Creating database...");
stmt = conn.createStatement();
String sql = "CREATE DATABASE ";
stmt.executeUpdate(sql);
System.out.println("Database created successfully...");
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye");
}//end main
}//end JDBCExample
答案 0 :(得分:2)
Class.forName()
失败的主要方式是没有在类路径上使用JDBC驱动程序,但这可能是运行时错误,而不是编译时错误,因为您似乎已经到达此处。
使用我的心灵调试能力,我想你可能正在使用GWT。我不相信它允许在客户端(它转换为JavaScript)。所有JDBC的东西都必须留在服务器端。 Google自己发布JRE emulation reference,以便您可以看到允许的内容。
Class
支持的方法仅限于:
如果我对你正在使用GWT的事实是正确的,那么最好使用GWT-RPC在客户端和服务器之间进行通信,并让服务器本身发出JDBC调用。
答案 1 :(得分:0)
在某种情况下,您可能在同一个包中有一个名为" Class.java" 的类。在这种情况下,它会忽略 java.lang 包中的" Class.java" 。由于您未在" Class.java" 中实现名为" forName()" 的方法,因此抛出此错误。
当我遇到类似的编译时错误时,我突然想到了。