Ich habe eine Reihe von Fragen zu diesem Problem, aber keine schlüssigen Antworten gesehen. Ich habe Probleme beim Aufruf einer Java-Klasse von meiner Worklight-Adapterimplementierung. Ich habe meinen Code durch den Code aus dem IBM Worklight Java Adapter-Lernprogramm ersetzt und schlägt genau so fehl. Außerdem habe ich auf der IBM Seite eine Antwort gefunden, die besagt, dass der Java 1.7 Compiler dieses Problem verursachen könnte und stattdessen Java 1.6 verwendet. Ich habe bestätigt, dass mein Compiler in Eclipse Java 1.6 ist.ECMA TypeError Java-Klasse von Worklight-Adapter aufrufen
Meine Java-Klassen beginnen alle mit com (z com.worklight.customcode). Ich habe versucht, sowohl öffentliche statische Methoden (mit der richtigen Syntax) aufrufen, als auch das Objekt instanziieren und die Methode aufrufen. Wie oben erwähnt, habe ich auch bestätigt, dass ich den Java 1.6 Compiler verwende.
Hier sind einige Code-Beispiele:
Adapter Implementierungsdatei:
function addTwoIntegers(a,b){
return {
result: com.worklight.customcode.Calculator1.addTwoIntegers(a,b)
};
}
Java-Datei (ungeschnittene IBM Worklight Probe): Paket 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;
}
}
Fehler in der Konsole:
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
Einige der damit verbundenen Fragen sind:
- 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
Dank Idan neu erstellen. Ich habe festgestellt, dass das Ändern des Typs von int in Object keinen Unterschied machte. Ich bekomme den gleichen Fehler. – user2217751
Ich vermute stark, dass dies ein Klassenpfadproblem mit Eclipse/Worklight ist. Ein weiteres interessantes Detail ist, dass der Code, den einer meiner Entwickler hatte (der in unserem Projekt jetzt veraltet ist), auf seiner Maschine gut funktioniert hat, aber nie auf meiner. Ich habe gerade festgestellt, dass es sich um ein ähnliches Problem handelt. Ich kann keine Java-Klassen richtig von JavaScript funktionieren. Wenn Sie das Internet nach diesem Problem durchsuchen, sieht es sehr ähnlich aus wie ein Klassenpfad (oder ein ähnliches Konfigurationsproblem), wo es auf dem Computer einer Person funktioniert, aber nicht auf dem eines anderen Computers. Irgendwelche Tipps, wo die Konfiguration in WL zu überprüfen? Ich habe offensichtlich den Klassenpfad überprüft. – user2217751
Hier ist ein Link zu einer anderen Frage, die verwandt scheint (und ungelöst): http://stackoverflow.com/questions/15826456/ecma-error-typeerror-cannot-call-property?rq=1 – user2217751