2016-04-25 140 views
2

我有两个班在我Spring-Boot应用:非静态字段不能从静态上下文Main方法中引用

-Tasks

-Runner

亚军类包含我main方法在哪里试图从我的任务类调用一个方法:

亚军:

@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 


} 

在我的亚军,当我尝试调用任务类,我得到了以下错误createTaskList()方法:

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

如何我解决这个问题?

+0

@ElliotFrisch,那篇文章没有完全回答OP的问题。由于它是一个弹簧引导应用程序,因此OP不能仅仅因为涉及注入的bean而创建一个静态实例。 –

+0

谢谢@HankD,你还有什么建议? – java123999

+0

@ElliotFrisch,我会引用他们到Krzysztof Wolny的回答http://stackoverflow.com/questions/28199999/how-does-a-spring-boot-console-based-application-work。它向他们展示了如何创建一个'main()'类似可以访问注入bean的非静态'run()'方法。 –

回答

1

主要方法是static这意味着它属于类而不是某个对象。因此,静态上下文无法引用实例变量,因为它不知道它将使用哪个实例(如果甚至有的话)。

总之,解决办法是让Tasks对象staticRunner类中。

相关问题