Я пытался использовать Drools и Android Studio для разработки игрового приложения для судоку. Но я столкнулся с проблемой интеграции Drools в приложение Android. Я добавил файлы jar.
implementation 'org.drools:drools-core:7.19.0.Final'
implementation files('libs/drools-android-7.19.0.Final.jar')
implementation files('libs/drools-compiler-7.19.0.Final.jar')
Я создал тестовый класс:
try {
KieServices ks = KieServices.Factory.get();
KieContainer kc = ks.getKieClasspathContainer();
KieSession kSession = kc.newKieSession("SudokuKS");
kSession.fireAllRules();
kSession.dispose();
} catch (Throwable t) {
t.printStackTrace();
}
Однако, когда я запустил приложение, проблема произошла в следующих строках:
KieContainer kc = ks.getKieClasspathContainer();
Ошибка:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.moxa.mysudoku, PID: 14267
java.lang.NullPointerException: Attempt to invoke interface method 'org.kie.api.runtime.KieContainer org.kie.api.KieServices.getKieClasspathContainer()' on a null object reference
at com.moxa.sudoku.RuleEngineTest.startEngine(RuleEngineTest.java:15)
at com.moxa.sudoku.SudokuFunctions.check(SudokuFunctions.java:33)
at com.moxa.sudoku.SudokuFunctions.getFunction(SudokuFunctions.java:21)
at com.moxa.sudoku.view.functionsgrid.FunctionButton.onClick(FunctionButton.java:25)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Может кто-нибудь помочь мне решить эту проблему?