2017-07-27 2 views
1

Je travaille sur la mise en œuvre Drools dans Android, coincé dans un problèmeDrools Android Intégration

java.lang.RuntimeException: Impossible de démarrer l'activité ComposantInfo {com.decurtis.drooldemo/com.decurtis.drooldemo.MainActivity }: java.lang.RuntimeException: Impossible d'instancier l'objet pour la classe 'org.drools.android.DexPackageClassLoader' avec le constructeur public org.drools.android.DexPackageClassLoader (org.drools.core.rule.JavaDialectRuntimeData, java.lang.ClassLoader) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2646) à l'adresse android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2707) at android.app.ActivityThread.-wrap12 (ActivityThread.java) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1460) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6077) à java.lang.reflect.Method.invoke (méthode native) à com. android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:756) Causé par: java.lang.RuntimeException: Impossible de instancier un objet pour cla ss 'org.drools.android.DexPackageClassLoader' avec le constructeur public org.drools.android.DexPackageClassLoader (org.drools.core.rule.JavaDialectRuntimeData, java.lang.ClassLoader) à org.drools.core.util.ClassUtils.instantiateObject (ClassUtils.java:272) à org.drools.core.rule.JavaDialectRuntimeData.makeClassLoader (JavaDialectRuntimeData.java:618) à org.drools.core.rule.JavaDialectRuntimeData.onAdd (JavaDialectRuntimeData.java:243) à org .drools.compiler.rule.builder.dialect.java.JavaDialect. (JavaDialect.java:187) à org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration.newDialect (JavaDialectConfiguration.java:91) à org.drools.compiler.builder.impl.KnowledgeBuilderConfi gurationImpl.buildDialectRegistry (KnowledgeBuilderConfigurationImpl.java:392) à org.drools.compiler.compiler.PackageRegistry. (PackageRegistry.java:55) à org.drools.compiler.builder.impl.KnowledgeBuilderImpl.newPackage (KnowledgeBuilderImpl.java:1571) à org.drools.compiler.builder.impl.KnowledgeBuilderImpl.initPackageRegistry (KnowledgeBuilderImpl.java:1044) à org.drools.compiler.builder.impl.KnowledgeBuilderImpl.createPackageRegistry (KnowledgeBuilderImpl.java:1015) à org.drools .compiler.builder.impl.CompositeKnowledgeBuilderImpl.initPackageRegistries (CompositeKnowledgeBuilderImpl.java:297) à org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildPackages (CompositeKnowl edgeBuilderImpl.java:116) à org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build (CompositeKnowledgeBuilderImpl.java:105) à org.drools.compiler.kie.builder.impl.AbstractKieModule.buildKnowledgePackages (AbstractKieModule.java: 244) à org.drools.compiler.kie.builder.impl.AbstractKieProject.verify (AbstractKieProject.java:64) à org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject (KieBuilderImpl.java:230) à org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll (KieBuilderImpl.java:198) à com.decurtis.drooldemo.MainActivity.kieExecute63 (MainActivity.java:81) à com.decurtis.drooldemo. Activité principale.onCreate (MainActivity.java:41) at android.app.Activity.performCreate (Activity.java:6662) à l'adresse android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2707) à l'adresse android.app.ActivityThread.-wrap12 (ActivityThread.java) at android.app.ActivityThread $ H.handleMessage (ActivityThread .java: 1460) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6077) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 866) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:756) causés par: java.lang.reflect.InvocationTargetException à java.lang.reflect.Constructor.newInstance0 (Méthode natif) à java.lang.reflect.Constructor.newInstance (Constructor.java:430) à org.drools.core.util.ClassUtils.instantiateObject (ClassUtils.java:270) à org.drools.core.rule.JavaDialectRuntimeData.m akeClassLoader (JavaDialectRuntimeData.java:618) à org.drools.core.rule.JavaDialectRuntimeData.onAdd (JavaDialectRuntimeData.java:243) à org.drools.compiler.rule.builder.dialect.java.JavaDialect. (JavaDialect.java : 187) à org.drools.compiler.rule.builder.dialect.java.JavaDialectConfiguration.newDialect (JavaDialectConfiguration.java:91) à org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.buildDialectRegistry (KnowledgeBuilderConfigurationImpl.java:392) à org.drools.compiler.compiler.PackageRegistry. (PackageRegistry.java:55) à org.drools.compiler.builder.impl.KnowledgeBuilderImpl.newPackage (KnowledgeBuilderImpl.java:1571) à org.drools.compiler.builder.impl.KnowledgeBuilderImpl.initPackageRegistry (KnowledgeBuilderImpl.java:1044) à org.drools.compiler.builder.impl.KnowledgeBuilderImpl.createPackageRegistry (KnowledgeBuilderImpl.java:1015) à org.drools.compiler .builder.impl.CompositeKnowledgeBuilderImpl.initPackageRegistries (CompositeKnowledgeBuilderImpl.java:297) à org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildPackages (CompositeKnowledgeBuilderImpl.java:116) à org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl .build (CompositeKnowledgeBuilderImpl.java:105) sur org.drools.compiler.kie.builder.impl.AbstractKieModule.buildKnowledgePackages (AbstractKieModule.java:244) à org.drools.compiler.kie.builder.impl.AbstractKieProject.verify (AbstractKieProject.java:64) à org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject (KieBuilderImpl.java:230) à org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll (KieBuilderImpl.java:198) à com.decurtis.drooldemo.MainActivity.kieExecute63 (MainActivity.java:81) à com.decurtis.drooldemo.MainActivity. onCreate (MainActivity.java:41) at android.app.Activity.performCreate (Activity.java:6662) à l'adresse android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1118) at android.app.ActivityThread.performLaunchAc tivity (ActivityThread.java: 2599) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2707) à android.app.ActivityThread.-wrap12 (ActivityThread.java) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java : 1460) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6077) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) à com.andr oid.internal.os.ZygoteInit.main (ZygoteInit.java:756) Causé par: java.lang.NullPointerException: Tentative d'invocation de la méthode virtuelle 'java.lang.String java.io.File.getAbsolutePath()' sur un null référence d'objet à org.drools.android.MultiDexClassLoader. (MultiDexClassLoader.java:70) 07-27 04: 43: 48.294 16631-16631/com.decurtis.drooldemo E/AndroidRuntime: à org.drools.android.DexPackageClassLoader. (DexPackageClassLoader.java:44)

Code: J'utilise la version de drools 6.5.0 et l'erreur ci-dessus.

KieServices ks = KieServices.Factory.get(); 
    KieRepository kr = ks.getRepository(); 
    KieFileSystem kfs = ks.newKieFileSystem(); 
    kfs.write(ResourceFactory.newClassPathResource("rules/Fire.drl", Fire.class)); 
    KieBuilder kb = ks.newKieBuilder(kfs); 
    kb.buildAll(); // kieModule is automatically deployed to KieRepository if successfully built. 
    if (kb.getResults().hasMessages(Message.Level.ERROR)) { 
     throw new RuntimeException("Build Errors:\n" + kb.getResults().toString()); 
    } 

    KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId()); 

    KieSession kSession = kContainer.newKieSession(); 

    System.out.println("Fire All Rules..."); 
    kSession.fireAllRules(); 
    kSession.dispose(); 

Avez-vous rencontré cette erreur, svp aidez-moi à sortir?

Répondre

0

Pour l'exception ci-dessus, ajoutez Janino à votre chemin de classe.

Imp: Il semble que les dépendances que bave-android utilise ne fonctionnent que jusqu'au niveau de l'API 21. Post à que l'API native dont ils ont besoin a été bloquée par Android. Vous pouvez tester cette application sur un téléphone avec Android version 5.1 et cela devrait fonctionner. Post que moi aussi je suis à la recherche d'une solution