Java jsp:无法从类转换为同一类
我有以下错误:Java jsp:无法从类转换为同一类,java,jsp,Java,Jsp,我有以下错误: An error occurred at line: 21 in the jsp file: /init.jsp Type mismatch: cannot convert from DB to DB 18: DB.setConfig( driver, url, username, password ); 19: 20: DB db1 = new DB(); 21: DB db2 = DB.getInstance(); 注意,它没有抱怨静态函数“set
An error occurred at line: 21 in the jsp file: /init.jsp
Type mismatch: cannot convert from DB to DB
18: DB.setConfig( driver, url, username, password );
19:
20: DB db1 = new DB();
21: DB db2 = DB.getInstance();
注意,它没有抱怨静态函数“setConfig”或构造函数的使用。
但是调用返回DB对象的静态函数失败
我该如何解决这个问题
getInstance()定义:
public static DB getInstance()
{
if ( db == null )
db = new DB();
return db;
}
下面是我将类导入jsp文件的方式:
<%@ page import="mypackage.DB" %>
<%@ page language="java" import="java.sql.*, java.util.Properties,java.io.*,java.lang.*" errorPage="" %>
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.* " %>
<%@ page import="java.io.*" %>
<%@ page import="mypackage.DB" %>
<%
try
{
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://localhost:5432/cse135_db";
String username = "postgres";
String password = "password";
DB.setConfig( driver, url, username, password );
DB db1 = new DB();
DB db2 = DB.getInstance();
String myDataField = null;
String myQuery = "SELECT * FROM users LIMIT 1";
Connection myConnection = null;
PreparedStatement myPreparedStatement = null;
ResultSet myResultSet = null;
Class.forName(driver).newInstance();
myConnection = DriverManager.getConnection(url,username,password);
/* myPreparedStatement = myConnection.prepareStatement(myQuery);
myResultSet = myPreparedStatement.executeQuery();
if(myResultSet.next())
myDataField = myResultSet.getString("username");
out.print(myDataField); */
}
catch( ClassNotFoundException e )
{
e.printStackTrace(); out.print("doesn't work");
}
catch ( SQLException ex )
{
out.print("SQLException: " + ex.getMessage());
out.print("SQLState: " + ex.getSQLState());
out.print("VendorError: " + ex.getErrorCode());
}
%>
我将jar复制到WEB-INF/lib中
以下是我的jsp文件的内容:
<%@ page import="mypackage.DB" %>
<%@ page language="java" import="java.sql.*, java.util.Properties,java.io.*,java.lang.*" errorPage="" %>
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.* " %>
<%@ page import="java.io.*" %>
<%@ page import="mypackage.DB" %>
<%
try
{
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://localhost:5432/cse135_db";
String username = "postgres";
String password = "password";
DB.setConfig( driver, url, username, password );
DB db1 = new DB();
DB db2 = DB.getInstance();
String myDataField = null;
String myQuery = "SELECT * FROM users LIMIT 1";
Connection myConnection = null;
PreparedStatement myPreparedStatement = null;
ResultSet myResultSet = null;
Class.forName(driver).newInstance();
myConnection = DriverManager.getConnection(url,username,password);
/* myPreparedStatement = myConnection.prepareStatement(myQuery);
myResultSet = myPreparedStatement.executeQuery();
if(myResultSet.next())
myDataField = myResultSet.getString("username");
out.print(myDataField); */
}
catch( ClassNotFoundException e )
{
e.printStackTrace(); out.print("doesn't work");
}
catch ( SQLException ex )
{
out.print("SQLException: " + ex.getMessage());
out.print("SQLState: " + ex.getSQLState());
out.print("VendorError: " + ex.getErrorCode());
}
%>
请帮个忙。嗯,实际上我不确定您是否能够调用第20行,它看起来像是编译器错误,而不是运行时异常。我不太熟悉jsp…@这是一个编译器错误。就我而言,措辞拙劣。已编辑。@LuiggiMendoza数据库类不包含在scriptlet标记中。除非您谈论的是导入,否则您使用的是Scriptlet,通过直接在JSP中使用
可以看出。可能您有两个或更多名为DB
的类,但您没有注意到这一点。再一次,帮自己一个忙,不要使用它们。相反,将该代码移动到Servlet中,并将请求转发到所需的jsp。。