【问题标题】:Non static field cannot be referenced from a static context- Main method [duplicate]不能从静态上下文中引用非静态字段-主方法 [重复]
【发布时间】:2016-08-18 22:10:05
【问题描述】:

我的Spring-Boot 应用程序中有 2 个课程:

-任务

-亚军

runner 类包含我的 main 方法,我尝试从我的 Tasks 类中调用一个方法:

跑步者:

@Component
public class Runner {

    Tasks tasks;    

    @Autowired
    public void setTasks(Tasks tasks){
        this.tasks=tasks;
    }

    public static void main(String[] args){

    //error being caused by below line
    tasks.createTaskList();

    }

任务类:

@Service
public class Tasks {

    public void createTaskList() {

    //my code
    }


    //other methods 


}

在我的 Runner 中,当我尝试在 Tasks 类中调用 createTaskList() 方法时,出现以下错误:

Non static field 'tasks' cannot be referenced from a static context

我该如何解决这个问题?

【问题讨论】:

  • @ElliotFrisch,该帖子并未完全回答 OP 的问题。由于它是一个spring boot应用程序,因此OP不能只创建一个静态实例,因为它涉及到注入的bean。
  • 谢谢@HankD,你还有什么建议?
  • @ElliotFrisch,我建议他们参考 Krzysztof Wolny 对stackoverflow.com/questions/28199999/… 的回答。它向他们展示了如何创建一个main() 类似非静态run() 方法来访问注入的bean。

标签: java class methods static main


【解决方案1】:

main方法是static,表示它属于类而不是某个对象。因此,它是一个静态上下文不能引用实例变量,因为它不知道如果有一个实例变量,它将使用Runner 的哪个实例。

简而言之,解决方案是让您的Tasks 对象staticRunner 类中。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2023-03-22
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多