我有一个JSP应用程序,它带有一个普通的java类Login.java和一个servlet,它在doGet方法中调用了一个名为loginList的过程。 loginList过程需要使用名为OAVDbUtil的java类创建一个登录列表,其中包含方法" getLoginsList"。但Eclipse似乎并没有认识到" getLoginsList"程序,当我进入它时,eclipse的按摩不能静态参考非静态方法"给出。但是一切看起来还不错,因为我没有将getLoginsList声明为静态。我认为有一种方法可以创建OAVDbUtil的实例,以避免必须创建新的OAVdbUtil对象的多个实例,但有人可以告诉我如何做到这一点,而不是得到消息" eclipse无法进行静态引用到非静态方法"?
这是一些代码和屏幕转储
servlet的屏幕转储
以下是OAVDbUtil的代码
public OAVDbUtil(DataSource theDataSource) {
dataSource = theDataSource;
}
public List<Login> getLoginsList() throws Exception {
List<Login> loginList = new ArrayList<Login>();
答案 0 :(得分:0)
getLoginsList()不是静态的,制作它就可以了。
答案 1 :(得分:0)
您收到此错误是因为getLoginsList()
不是static
。
您可以更改该方法static
public static List<Login> getLoginsList() throws Exception {
(OR)
为OAVDbUtil
OAVDbUtil dbUtil = new OAVDbUtil();
List<Login> logins = dbUtil.getLoginsList();
答案 2 :(得分:0)
OAVDbUtil.getLoginsList()
是如何在类中使用静态方法的,不能使用它来访问类的实例方法。
如果您希望getLoginsList
成为静态方法,则将其声明为:
public static List<Login> getLoginsList() throws Exception
如果您希望getLoginsList
成为实例方法,那么您需要拥有OAVDbUtil
类的实例并且可用,并使用以下方法调用该方法:
OAVDbUtil theInstance = .... get from somewhere
List<Login> logins = theInstance.getLoginsList();
答案 3 :(得分:0)
您需要向servlet提供OAVDbUtil
的实例,然后在该对象上调用getLoginsList()
。
servlet可以在其初始化方法中构造这样的对象,也可以通过容器将其注入到servlet中。