Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jsp:无法从类转换为同一类_Java_Jsp - Fatal编程技术网

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。。