我已經看到有關此問題的一些問題,但沒有確定的答案。我無法從我的Worklight適配器實現中調用Java類。我用IBM Worklight Java Adapter教程中的代碼替換了我的代碼,並且它以完全相同的方式失敗。此外,我在IBM的網站上發現了一個響應,稱Java 1.7編譯器可能會導致此問題,並改用Java 1.6。我驗證了我在Eclipse中的編譯器是Java 1.6。ECMA TypeError從Worklight適配器調用Java類
我的Java類都開始與COM(例如com.worklight.customcode)。 我已經試過調用公共靜態方法(使用正確的語法)以及實例化對象並調用方法。如上所述,我也驗證了我正在使用Java 1.6編譯器。
下面是一些示例代碼:
適配器實現的文件:
function addTwoIntegers(a,b){
return {
result: com.worklight.customcode.Calculator1.addTwoIntegers(a,b)
};
}
爪哇文件(未編輯的IBM工作燈樣品): 包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;
}
}
錯誤控制檯:
TypeError: Cannot call property addTwoIntegers in object [JavaPackage com.worklight.customcode.Calculator1]. It is not a function, it is "object". (%2FUsers%2Fhome%2Fdev%2Fapp%2Fappprj%2Fadapters%2Fadapter/adapter-impl.js#26) FWLSE0101E: Caused by: null
一些相關的問題是:
- Ecma Error: TypeError: Cannot call property
- i want to call a java class from the worklight adapter
- https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014867695
謝謝Idan。我確認將類型從int更改爲Object沒有任何區別。我犯了同樣的錯誤。 – user2217751
我強烈懷疑這是Eclipse/Worklight中的類路徑問題。另一個有趣的細節是,我的開發人員工作的代碼(在我們的項目中已經過時)在他的機器上工作良好,但從未在我的機器上工作。我剛剛意識到這是一個類似的問題。我無法讓任何Java類從JavaScript正常工作。在關於這個問題的互聯網上搜索時,它看起來與類路徑(或類似的配置問題)非常相似,它可以在一個人的機器上工作,而在另一個人的機器上工作而不在另一個人的機器上。有關在WL中檢查配置的任何提示?我明顯檢查了類路徑。 – user2217751
這裏有一個鏈接到另一個似乎相關的問題(和未解決):http://stackoverflow.com/questions/15826456/ecma-error-typeerror-cannot-call-property?rq=1 – user2217751