我已经看到了很多关于这个问题的问题,但没有确凿的答案.我在从Worklight适配器实现中调用Java类时遇到问题.我用IBM Worklight Java Adapter教程中的代码替换了我的代码,它以完全相同的方式失败.此外,我在IBM的网站上发现了一个回应,称Java 1.7编译器可能会导致此问题并改为使用Java 1.6.我验证了Eclipse中的编译器是Java 1.6.
我的Java类都以com开头(例如com.worklight.customcode).我已经尝试过调用公共静态方法(使用正确的语法)以及实例化对象和调用方法.如上所述,我还验证了我正在使用Java 1.6编译器.
以下是一些代码示例:
适配器实现文件:
function addTwoIntegers(a,b){
return {
result: com.worklight.customcode.Calculator1.addTwoIntegers(a,b)
};
}
Run Code Online (Sandbox Code Playgroud)
Java文件(未经编辑的IBM Worklight示例):package com.worklight.customcode;
import java.util.logging.Logger;
public class Calculator1 {
private final static Logger logger = Logger.getLogger(Calculator1.class.getName());
public static int addTwoIntegers(int first, int second){
logger.info("addTwoIntegers invoked");
return first + second;
}
public int subtractTwoIntegers(int first, int second){
logger.info("subtractTwoIntegers invoked");
return first - second;
}
}
Run Code Online (Sandbox Code Playgroud)
控制台出错:
TypeError:无法在对象[JavaPackage com.worklight.customcode.Calculator1]中调用属性addTwoIntegers.它不是一个功能,它是"对象".(%2FUsers%2Fhome%2Fdev%2Fapp%2Fappprj%2Fadapters%2Fadapter/adapter-impl.js#26)FWLSE0101E:引起:null
一些相关问题是: