Вызов адаптера рабочего света java получил ошибку Ecma ReferenceError
Кажется, ошибка связана с пакетом класса java, если он начинается с com.xx.xx, он работает, если он начинается с cn.xx.xx, ошибка выдаст. это ошибка?
Класс Java:
package cn.linkey.util;
public class TestJava {
public String md5(String aa){
return "md5" + aa;
}
}
Адаптер:
function sayHello(name){
var tj = new cn.linkey.util.TestJava();
return {result: "hello " + tj.md5(name) + '.'};
}
Ошибка:
{
"errors": [
"Ecma Error: ReferenceError: \"cn\" is not defined. (TestHTTP-impl.js#41)"
],
"info": [
],
"isSuccessful": false,
"warnings": [
]
}
Ошибка сервера:
[ERROR ] FWLSE0099E: An error occurred while invoking procedure [project HelloWL]TestHTTP/sayHelloFWLSE0100E: parameters: [project HelloWL]
ReferenceError: "cn" is not defined. (TestHTTP-impl.js#41)
FWLSE0101E: Caused by: [project HelloWL]nullorg.mozilla.javascript.EcmaError: ReferenceError: "cn" is not defined. (TestHTTP-impl.js#41)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3750)
at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1728)
at org.mozilla.javascript.gen.TestHTTP_impl_js_6._c_sayHello_1(TestHTTP-impl.js:41)
at org.mozilla.javascript.gen.TestHTTP_impl_js_6.call(TestHTTP-impl.js)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at org.mozilla.javascript.gen.TestHTTP_impl_js_6.call(TestHTTP-impl.js)
at com.worklight.integration.js.JavaScriptManager.callFunction(JavaScriptManager.java:240)
at com.worklight.integration.js.JavaScriptManager.invokeFunction(JavaScriptManager.java:214)
at com.worklight.integration.js.JavaScriptManager.invokeFunction(JavaScriptManager.java:194)
at com.worklight.integration.services.impl.AdapterManagerImpl.invokeFunction(AdapterManagerImpl.java:117)
at com.worklight.integration.js.JavaScriptProcedureInvoker.invoke(JavaScriptProcedureInvoker.java:42)
at com.worklight.integration.model.ProcedureInvoker.invokeProcedure(ProcedureInvoker.java:57)
at com.worklight.integration.model.Procedure.invoke(Procedure.java:166)
at com.worklight.integration.model.InvocationContext.call(InvocationContext.java:169)
at com.worklight.integration.model.InvocationContext.call(InvocationContext.java:38)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at com.worklight.server.util.ProjectLocal$1RunnableWrapper.run(ProjectLocal.java:261)
at java.lang.Thread.run(Thread.java:695)
1 ответ
Решение
В документации Worklight конкретно упоминается использование только com
/org
/net
в качестве префикса пакета, тогда как вы используете cn
,
См. Слайд № 7 в учебном модуле " Использование Java в адаптерах ".
Измените используемый префикс, так как это, вероятно, решит проблему, с которой вы столкнулись.