wso2错误'within'既不是函数扩展也不是聚合属性扩展Android

问题描述 投票:1回答:1

我正在做一个Android应用,并嵌入Wso2(Siddhi)。我已经将geo-gpl-extension导入为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;";

有人知道发生了什么吗?

java android wso2 siddhi
1个回答
0
投票
我终于找到了解决错误的方法。我只需要将此行添加到MainActivity.java中://声明de SiddhiManager变量后

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

© www.soinside.com 2019 - 2024. All rights reserved.