Spring-Boot
アプリケーションに2つのクラスがあります。
-タスク
-ランナー
ランナークラスには、Tasksクラスからメソッドを呼び出そうとする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
}
ランナーで、TasksクラスのcreateTaskList()メソッドを呼び出そうとすると、次のエラーが発生します。
Non static field 'tasks' cannot be referenced from a static context
どうすればこれを解決できますか?
Mainメソッドはstatic
です。これは、オブジェクトではなくクラスに属していることを意味します。そのため、静的コンテキストはインスタンス変数を参照できません。これは、Runner
のインスタンスがあったとしても、それがどのインスタンスを使用するかがわからないためです。
要するに、解決策は、Tasks
オブジェクトをstatic
クラスにRunner
にすることです。