2016-04-25 112 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類中。

相關問題