Tôi đã nhìn thấy một số câu hỏi về vấn đề này nhưng không có câu trả lời kết luận. Tôi gặp sự cố khi gọi một lớp Java từ triển khai bộ điều hợp Worklight của mình. Tôi đã thay thế mã của mình bằng mã từ hướng dẫn Bộ điều hợp Java Worklight Java và nó không thành công theo cùng một cách. Hơn nữa tôi tìm thấy một phản ứng trên trang web của IBM nói rằng trình biên dịch Java 1.7 có thể gây ra vấn đề này và sử dụng Java 1.6 thay thế. Tôi đã xác nhận rằng trình biên dịch của tôi trong Eclipse là Java 1.6.ECMA TypeError gọi Java class từ Worklight adapter
lớp My Java tất cả bắt đầu với com (ví dụ com.worklight.customcode). Tôi đã thử cả hai gọi phương thức tĩnh công cộng (sử dụng cú pháp thích hợp) cũng như instantiating đối tượng và gọi phương thức. Như đã đề cập ở trên, tôi cũng đã xác nhận rằng tôi đang sử dụng trình biên dịch Java 1.6.
Dưới đây là một số mẫu mã:
Adaptor thực hiện file:
function addTwoIntegers(a,b){
return {
result: com.worklight.customcode.Calculator1.addTwoIntegers(a,b)
};
}
tập tin Java (chưa được chỉnh sửa mẫu IBM Worklight): gói 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;
}
}
Lỗi trong giao diện điều khiển:
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
Một số câu hỏi có liên quan bao gồm:
- 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
Cảm ơn Idan. Tôi đã xác minh việc thay đổi kiểu từ int thành Object không có sự khác biệt. Tôi nhận được lỗi tương tự. – user2217751
Tôi mạnh mẽ nghi ngờ đây là một vấn đề classpath với Eclipse/Worklight. Một chi tiết thú vị khác là mã mà một trong những nhà phát triển của tôi đã làm việc (đã lỗi thời trong dự án của chúng tôi bây giờ) đã làm việc tốt trên máy tính của anh ta nhưng không bao giờ làm trên máy của tôi. Tôi chỉ nhận ra đó là một vấn đề tương tự. Tôi không thể nhận được bất kỳ lớp Java nào hoạt động đúng từ JavaScript. Trong việc cọ rửa Internet liên quan đến vấn đề này, nó trông rất giống với một classpath (hoặc vấn đề cấu hình tương tự), nó hoạt động trên máy của một người nhưng không hoạt động trên máy của người khác. Bất kỳ lời khuyên về nơi để kiểm tra cấu hình trong WL? Tôi rõ ràng đã kiểm tra classpath. – user2217751
Đây là liên kết đến một câu hỏi khác có vẻ liên quan (và chưa được giải quyết): http://stackoverflow.com/questions/15826456/ecma-error-typeerror-cannot-call-property?rq=1 – user2217751