2013-04-05 8 views
5

nicht aufrufen Ich habe einige Java-Code in einem Adapter in Worklight-Projekt geschrieben. wenn ich versuche, die Java-Methode aufrufen, bin ich erhalte eine FehlermeldungEcma Fehler: TypeError: Kann Eigenschaft

"responseID":"6","errors": {Ecma Error: TypeError: Cannot call property downloadFile in object JavaPackage java.classes.FileIOPlugin]. It is not a function, it is \"object\".}

sagen, dass ich das Verfahren genau in dem folgenden Link angegeben gefolgt. Using Java in Adapters

das ist meine Projektstruktur. Stimmt etwas nicht mit dieser Struktur oder sollte ich etwas hinzufügen?

enter image description here

Dies ist, wie ich versuche, die Java nicht-statische Methode in Adapter-impl.js

function downloadFile() { 
    var fileInstance = new com.worklight.JavaCode.FileIOPlugin(); 
    return 
    { result: fileInstance.downloadFile(); }; 

}

Antwort

6

Wir haben eine weitere mögliche Lösung dieses Problems identifiziert.

  • ändern Java-Compiler Ebene 1.6 sowie Standard-JRE bis 1,6:

Compiler level JRE version

+0

Ich hatte ein ähnliches Problem, @christianmenkens Antwort um [this se post] (http://stackoverflow.com/questions/16614742/ecma-typeerror-calling- Java-Klasse-von-Worklight-Adapter? Rq = 1) löste mein Problem –

+0

Sie entdeckt es! außerdem musste ich die vorherige "missformed" -Anwendung vom Server entfernen und den WAR neu erstellen –

0

sicher, dass Ihr Paket mit com beginnt Stellen zu nennen, beispielsweise Benenne es in "com.classes" um.

+0

Hallo, vielen Dank für Ihre Antwort. aber ich habe das auch versucht. Ich bekomme den gleichen Fehler. –

0

Versuchen Sie, die Klammer hinzuzufügen, wenn Sie Ihr Objekt instanziiert:

var fileInstance = new com.worklight.JavaCode.FileIOPlugin() 
+0

yeah ich tat das auch .. keine Änderung in der Fehler .. –

0

Ihre .project Datei prüfen und sicherstellen, dass es die richtige buildCommand Tags in ihm hat.

<buildCommand> 
     <name>org.eclipse.jdt.core.javabuilder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
    <buildCommand> 
     <name>org.eclipse.wst.jsdt.core.javascriptValidator</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
    <buildCommand> 
     <name>org.eclipse.wst.common.project.facet.core.builder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
    <buildCommand> 
     <name>com.worklight.studio.plugin.WorklightProjectBuilder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 
    <buildCommand> 
     <name>org.eclipse.wst.validation.validationbuilder</name> 
     <arguments> 
     </arguments> 
    </buildCommand> 

Lesen Sie mehr auf: ECMA TypeError calling Java class from Worklight adapter