Java &引用;找不到符号“;使用Class.forName()时出现问题
我的代码中出现Java &引用;找不到符号“;使用Class.forName()时出现问题,java,Java,我的代码中出现找不到符号错误。有人知道是什么导致了这个问题吗 代码是: // 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.
找不到符号错误。有人知道是什么导致了这个问题吗
代码是:
// 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
Class.forName()
失败的主要原因是类路径上没有可用的JDBC驱动程序,但这将是一个运行时错误,而不是编译时错误
使用我的心灵调试能力,我想你可能在使用GWT。我认为它不允许在客户端(在客户端,它被转换为JavaScript)实现这一点。所有JDBC的东西都必须留在服务器端。谷歌自己发布的,所以你可以看到什么是允许的
Class
支持的方法限于:
- desiredAssertionStatus()
- getEnumConstants()
- getName()
- getSuperclass()
- isArray()
- isEnum()
- i接口()
- isPrimitive()
- toString()
如果我对使用GWT这一事实的看法是正确的,那么最好使用GWT-RPC在客户机和服务器之间进行对话,并让服务器本身发出JDBC调用
如果需要有关GWT-RPC的更多信息,请参阅。GWT新闻组中有一个错误,您可以阅读它以了解更多信息。类.forName()
失败的主要方式是类路径上没有可用的JDBC驱动程序,但这将是一个运行时错误,而不是您在这里看到的编译时错误
使用我的心灵调试能力,我想你可能在使用GWT。我认为它不允许在客户端(在客户端,它被转换为JavaScript)实现这一点。所有JDBC的东西都必须留在服务器端。谷歌自己发布的,所以你可以看到什么是允许的
Class
支持的方法限于:
- desiredAssertionStatus()
- getEnumConstants()
- getName()
- getSuperclass()
- isArray()
- isEnum()
- i接口()
- isPrimitive()
- toString()
如果我对使用GWT这一事实的看法是正确的,那么最好使用GWT-RPC在客户机和服务器之间进行对话,并让服务器本身发出JDBC调用
如果需要有关GWT-RPC的更多信息,请参阅。GWT新闻组中有一个名为“class.java”的类,您可以阅读该类以了解更多信息。在同一个包中可能有一个名为“class.java”的类。在这种情况下,它会忽略java.lang包中的“Class.java”。因为您没有在“Class.java”中实现名为“forName()”的方法,所以它会抛出此错误
当我遇到一个类似的编译时错误时,我想到了这一点。可能有一个场景,在同一个包中有一个名为“class.java”的类。在这种情况下,它会忽略java.lang包中的“Class.java”。因为您没有在“Class.java”中实现名为“forName()”的方法,所以它会抛出此错误
当我遇到类似的编译时错误时,我突然想到了这一点。请提问,不要只是发布错误消息。@joseph,我试图澄清这个问题以使其更易于回答。如果我错误地改变了意图,请告诉我。你真的像我猜测的那样使用GWT吗?@paxdiablo:这个问题被过度编辑了。你能不能把它改回去,以反映第一个Class.forName。。。是代码,还有从方法。。。编译器错误输出是向前的吗?我看到结尾处缺少双引号.Class.forName(“net.sourceforge.jtds.jdbc.Driver”);好的,bods,在检查javac实际输出的缺少的方法后,我改变了它以反映您的评论-我特别喜欢微妙的“过度编辑”评论:-)希望现在这更接近原始意图。如果你能确认,@joseph,那就好了。请问一个问题,不要只是发一条错误消息。@joseph,我试图澄清这个问题,让它更容易回答。如果我错误地改变了意图,请告诉我。你真的像我猜测的那样使用GWT吗?@paxdiablo:这个问题被过度编辑了。你能不能把它改回去,以反映第一个Class.forName。。。是代码,还有从方法。。。编译器错误输出是向前的吗?我看到结尾处缺少双引号.Class.forName(“net.sourceforge.jtds.jdbc.Driver”);好的,bods,在检查javac实际输出的缺少的方法后,我改变了它以反映您的评论-我特别喜欢微妙的“过度编辑”评论:-)希望现在这更接近原始意图。如果你能证实,约瑟夫,那就好了。
//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