Я не знаю, почему я получаю NullPointerException:
ERROR [AWT-EventQueue-0] 18:21:05,864 repast.simphony.ui.RSApplication - Error while initializing simulation
java.lang.NullPointerException
at intraCity_Simulator.GlobalScheduler.load_data(GlobalScheduler.java:20)
at intraCity_Simulator.Initialization_Builder.build(Initialization_Builder.java:306)
at repast.simphony.dataLoader.engine.ClassNameContextBuilder.build(ClassNameContextBuilder.java:41)
Ниже приведен код. Запрос работает, когда я помещаю его непосредственно в инициализацию (построитель контекста), но когда я помещаю этот код в другой класс и вызываю его в конструкторе контекста, он сообщает об исключении NullPointerException.
public void load_data() {
Context<Object> context = ContextUtils.getContext(this);
Iterable<Object> readers = context.getObjects(DataReader.class);
DataReader this_reader = null;
Query<Object> reader_query = new PropertyEquals<Object>(context, "name", "parcel");
for (Object o : reader_query.query()) {
if (o instanceof DataReader) {
this_reader = (DataReader) o;
}
}
System.out.print(this_reader.getName());
}
, когда я делаю это в контекстестроитель сообщает об исключении nullPointerException
GlobalScheduler gs = new GlobalScheduler();
context.add(gs);
gs.load_data();
ОБНОВЛЕНИЕ:
Я просто нахожу строку "Context context = ContextUtils.getContext (this);"не работает. контекст все еще нулевой. Почему? Но мне нужна эта строка, так как для запроса нужен контекст в качестве параметра.
Однако, если я последую вашему предложению передать контекст непосредственно в метод load_data (), он будет работать.
public void load_data(Context context) {
// Context<Object> context = ContextUtils.getContext(this);
DataReader this_reader = null;
System.out.println("context " + context);
Query<Object> reader_query = new PropertyEquals<Object>(context, "name", "parcel");
for (Object o : reader_query.query()) {
System.out.println(o);
if (o instanceof DataReader) {
this_reader = (DataReader) o;
}
}
System.out.print(this_reader.getName());
}
Почему я не могу определить контекст с помощью "Context context = ContextUtils.getContext (this);"? Этот метод работает, если он вызывается как метод в step (), но не работает, если он вызывается как метод в Context Builder.