worklight适配器调用java得到了Ecma Error ReferenceError

时间:2014-08-20 14:08:59

标签: java ibm-mobilefirst worklight-adapters

似乎错误与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 个答案:

答案 0 :(得分:0)

Worklight文档明确提到仅使用com / org / net作为包前缀,而您使用cn

请参阅Using Java in adapters培训模块中的幻灯片#7 更改已使用的前缀,因为这可能会解决您遇到的问题。