wso2 Ошибка «в пределах» не является ни расширением функции, ни расширением агрегированного атрибута Android - PullRequest
1 голос
/ 06 февраля 2020

Я делаю приложение android и внедряю его с помощью Wso2 (сиддхи). Я импортировал расширение geo-gpl как файл jar, но при запуске приложения возникает следующая ошибка:

2020-02-05 13:38:45.141 26382-26382/uca.es.geofencingsiddhi E/AndroidRuntime: FATAL EXCEPTION: main
Process: uca.es.geofencingsiddhi, PID: 26382
java.lang.RuntimeException: Unable to start activity ComponentInfo{uca.es.geofencingsiddhi/uca.es.geofencingsiddhi.MainActivity}: io.siddhi.core.exception.SiddhiAppCreationException: Error on 'geofencingSiddhi' @ Line: 1. Position: 204, near 'geo:within(longitud, latitud, geoJSONGeometryFence)'. 'within' is neither a function extension nor an aggregated attribute extension
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:201)
    at android.app.ActivityThread.main(ActivityThread.java:6810)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
 Caused by: io.siddhi.core.exception.SiddhiAppCreationException: Error on 'geofencingSiddhi' @ Line: 1. Position: 204, near 'geo:within(longitud, latitud, geoJSONGeometryFence)'. **'within' is neither a function extension nor an aggregated attribute extension**
    at io.siddhi.core.util.parser.ExpressionParser.parseExpression(ExpressionParser.java:441)
    at io.siddhi.core.util.parser.SelectorParser.getAttributeProcessors(SelectorParser.java:215)
    at io.siddhi.core.util.parser.SelectorParser.parse(SelectorParser.java:92)
    at io.siddhi.core.util.parser.QueryParser.parse(QueryParser.java:144)
    at io.siddhi.core.util.parser.SiddhiAppParser.parse(SiddhiAppParser.java:254)
    at io.siddhi.core.SiddhiManager.createSiddhiAppRuntime(SiddhiManager.java:85)
    at io.siddhi.core.SiddhiManager.createSiddhiAppRuntime(SiddhiManager.java:95)
    at uca.es.geofencingsiddhi.MainActivity.onCreate(MainActivity.java:48)
    at android.app.Activity.performCreate(Activity.java:7224)
    at android.app.Activity.performCreate(Activity.java:7213)

Кажется, что он не читает или не обнаруживает файл jar, но если я это делаю например, в MainActivity. java «import ort.wso2.siddhi.gpl.distanceFunction» он его обнаруживает, поэтому я не знаю, что происходит. Я поместил файл jar в app / libs.

Вот мой build.gradle:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation('io.siddhi:siddhi-core:5.1.11') {
    transitive = false
}
implementation('io.siddhi:siddhi-query-api:5.1.7') {
    transitive = false
}
annotationProcessor('io.siddhi:siddhi-annotations:5.1.7') {
    transitive = false
}
implementation('io.siddhi:siddhi-annotations:5.1.7') {
    transitive = false
}
implementation('io.siddhi:siddhi-query-compiler:5.1.7') {
    transitive = false
}
implementation('io.siddhi.extension.map.text:siddhi-map-text:2.0.4') {
    transitive = false
}
implementation('io.siddhi.extension.map.keyvalue:siddhi-map-keyvalue:2.0.4') {
    transitive = false
}
implementation 'com.google.guava:guava:23.0'
implementation('org.apache.log4j.wso2:log4j:1.2.17.wso2v1') {
    transitive = false
}
implementation 'org.osgi:org.osgi.core:6.0.0'
implementation 'org.wso2.orbit.com.lmax:disruptor:3.3.7.wso2v1'
implementation 'org.antlr:antlr4-runtime:4.8'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.support:design:29.0.2'
implementation 'io.dropwizard.metrics:metrics-core:4.1.2'
implementation files('libs/siddhi-gpl-execution-geo-4.0.18.jar')

}

И запрос:

 private String app = "@app:name('geofencingSiddhi') " +
        "define stream inStream(id string, latitude double, longitud double, geoJSONGeometryFence string); " +
        "from inStream " +
        "select id, geo:within(longitud, latitud, geoJSONGeometryFence) as resultado " +
        "insert into outputStream;";

Кто-то знает, что происходит?

1 Ответ

0 голосов
/ 17 апреля 2020

Я наконец нашел, как исправить ошибку. Мне просто нужно добавить эти строки в MainActivity. java: // После объявления переменной de SiddhiManager

siddhiManager.setExtension("geo:abstract", AbstractGeoOperationExecutor.class); siddhiManager.setExtension("geo:within", GeoWithinFunctionExecutor.class);
...