Ich habe gerade angefangen groovig zu lernen und versuche meinen Java Code in groovige Skripte zu transponieren. Normalerweise ermöglicht Java, dass Sie eine Klasse mit nur Methoden haben, die Sie von anderen Klassen aufrufen können. Ich wollte das zu groovy übersetzen. Ich in einer Datei haben - nennen wir es eine Methode, wie diese File1-:Methoden zwischen groovigen Skripten mit korrekten Parametern aufrufen
def retrieveData(String name){
// do something
}
und in der zweiten Datei, File2, ich nenne File1 wie folgt aus:
def file1Class = this.class.classLoader.parseClass(new File("../File1.groovy"))
und dann versuchen, die anrufen Verfahren in File1 wie folgt aus:
def data = file1Class.retrieveData("String")
aber es hält mich diesen Fehler geben - Missing:
groovy.lang.MissingMethodException: No signature of method: static File1.retrieveData() is applicable for argument types: (java.lang.String) values: [String] Possible solutions: retrieveData(java.lang.String)
so erkennt es, dass ich die richtige Anzahl von Parametern und sogar das richtige Objekt sende, aber es läuft nicht die Methode, wie es sollte? Gibt es etwas, das mir fehlt? Ich habe versucht, die Objektdefinition aus dem Verfahren zu entfernen - mit anderen Worten - wie folgt aus:
def retrieveData(name){
// do something
}
aber das hat nicht funktioniert entweder. Ich habe keine Ahnung, was der nächste Schritt sein würde. Kann mir bitte jemand helfen, mich in die richtige Richtung zu schieben? Ich würde es sehr begrüßen.
Ich habe das versucht, aber es ignoriert den Klassenpfad vollständig. Ich habe notwendige JAR-Dateien in den ext-Ordner geschrieben, damit die soapUI darauf zugreifen kann, und zwar mit der Methode, auf die ich in der Frage Bezug genommen habe, aber wenn ich das tue, löst sie eine MultipleCompilationErrorsException aus: Klasse HSSFCell kann nicht aufgelöst werden – droidnoob
Versuchen Sie, ein Verzeichnis aufzurufen? Wenn ja, [lesen Sie diese Antwort] (http://stackoverflow.com/questions/15565961/groovyscriptengine-load-groovy-scripts-from-subfolder#15566768), die das Laden von einem Unterordner beschreibt. Wenn Sie Ressourcen aufrufen, die durch einen relativen Pfad definiert sind, müssen Sie beim Wechseln zwischen groovigen Klassen besondere Vorsicht walten lassen. – Nathan
Das File1.groovy und das XML, das das File2.groovy enthält, befinden sich beide in dem Ordner Dokumente. Ja, ich musste das loadScript by Name folgendermaßen bearbeiten: 'loadScriptByName ('../../../../Users/myname/Documents/File1.groovy ') 'aber die JAR-Dateien sollten in den SOAPUI_HOME/bin/ext-Ordner gehen. Warum also wird es das nicht sehen? beim Lesen von File1.groovy? – droidnoob