Java ScriptEngineManager funktioniert nicht mehr mit dem AppleScript von Mountain Lion

8

Seit meinem Upgrade auf Mountain Lion kann ich meinen AppleScript-Code nicht mehr über den Java ScriptEngineManager ausführen.

Der Beispielcode auf der Apple-Seite ( Link ) gibt für das Objekt engine null zurück.

%Vor%

Kennt jemand Workarounds?

    
dejuknow 15.08.2012, 22:44
quelle

5 Antworten

4

Ich habe es funktioniert, indem ich eine Datei mit dem Namen "javax.script.ScriptEngineFactory" in den Ordner "META-INF / services" in meinem Jar als ytw angegeben.

Ich muss auch ein wenig Code ändern: Sprache scheint nicht mehr "AppleScript", sondern "AppleScriptEngine" zu sein. Also sollte das funktionieren:

%Vor%

Zumindest funktioniert das auf meinen MacOS X Mavericks mit JDK 1.7.45 ...

    
Alban 07.01.2014, 16:09
quelle
4

Ich habe dieses Problem auf bugreport.apple.com (Bug-ID: 12692742) veröffentlicht. Ich habe diese Antwort erhalten:

20-Feb-2013 04:21 PM Apple Entwickler-Fehlerberichterstattungsteam: Wir denken, Sie hatten eine Installation von Lion mit JavaDeveloper. Sie haben ein Upgrade auf Mountain Lion durchgeführt, das (von Entwurf) alle Spuren von zuvor installiertem Java SE 6 unter / System entfernt hat. Dies hinterließ ein funktionales SE 6 JDK Bundle unter / Library / Java / JavaVirtualMachines, aber die Inhalte von / System / Library / Java / Extensions waren weg.

Sie können dies auf verschiedene Arten lösen:

1) Installieren Sie das JavaDeveloper-Paket erneut auf dem Mountain Lion-System.

2) Installieren Sie Java für OS X erneut, indem Sie alle JDK-Bundles unter / Library / Java / JavaVirtualMachines und / System / Library / Java / JavaVirtualMachines entfernen und "java -version" oder "/ usr / libexec / java_home - Anfrage 'Installation-on-Demand zu initiieren.

3) Installieren Sie Java 7 von Oracle, das AppleScriptEngine bündelt.

Von den 3 Optionen ist # 3 die Empfehlung, da Entwickler sowieso zu Java 7 wechseln sollten.

    
dejuknow 22.04.2013 16:33
quelle
3

Ich habe das geschafft, indem ich AppleScriptEngine.jar und libAppleScriptEngine.jnilib aus / System / Library / Java / Extensions / unter Mac OS X 10.7 (Lion) kopiert habe und es zu meinem Klassenpfad hinzugefügt habe.

Nicht sicher, warum Apple diese Erweiterungen in Mountain Lion entfernt hat. Ich habe darüber in ihren Entwicklerforen gefragt: link .

    
dejuknow 30.08.2012 00:37
quelle
2

Die AppleScriptEngine-Klasse befindet sich bereits in rt.jar (Java 7 für Mac OS X). Wenn Sie die Informationen hier ( Ссылка ) beachten, machen Sie Es kann gefunden werden, indem eine Datei namens javax.script.ScriptEngineFactory unter META-INF / services abgelegt wird. Dann kann es funktionieren, ohne auf die AppleScriptEngine.jar in / System / Library / Java / Extensions / angewiesen zu sein. Persönlich finde ich es robuster, was bereits in rt.jar verwendet wird.

    
ytw 18.06.2013 21:12
quelle
2

Unter Mac OS Yosemite, Java - Version: 1.7.0_40-ea

  1. Anstelle von ScriptEngine engine = mgr.getEngineByName ("AppleScript"); Sie müssen Folgendes verwenden:

ScriptEngine-Engine = mgr.getEngineByName ("AppleScriptEngine");

  1. Erstellen Sie in Ihrem src-Verzeichnis das Verzeichnis META-INF

  2. Erstellen Sie in Ihrem src-Verzeichnis das Verzeichnis META-INF / services

  3. Erstellen Sie die Datei META-INF / services / javax.script.ScriptEngineFactory

  4. In dieser Datei befindet sich eine Zeile:

apple.applescript.AppleScriptEngineFactory

Erstellen und starten Sie die Anwendung! (Übrigens ist es nicht mehr Java, es ist Magie)

    
Rio 03.11.2014 13:22
quelle