Vielleicht ist noch ganz interessant zu wissen, dass nur der erste Befehl so lange zum Laden braucht (hab ich eben erst rausgefunden). Wenn ich hinter das a.pause() gleich ein a.next() setze, dauert es erst seine Zeit bis die Musik stoppt und gleich dannach wird auf das nächste Lied gesprungen.
Kann es sein, dass bei dem Verbindungsaufbau mit iTunes irgendwas schief läuft?
Jan
Ergebnis 1 bis 10 von 12
- 16.08.2006, 19:14 #1derJanInaktiv
Startprobleme mit Java, AppleScript und iTunes
N'Abend Apfeltalk!
Ich bin gerade eine bisschen am experimentieren (okay: rumspielen
) mit Java und AppleScript. Ich wurde zum Anfang gerne mein iTunes ansprechen. Über google hab ich auf macosxhints.com einen entsprechenden Artikel gefunden. Wenn ich die Klasse jetzt nutzte, dauert es sehr lange (30-60 Sekunden) bis iTunes angesprochen wird. Der Quelltext ist 1:1 von macosxhints.com übernommen und wurde nur noch mit einer statischen main-Methode von mir ausgestattet.
Der Build Prozess wurde mit folgenden Befehlen durchgeführt.Code:import com.apple.cocoa.foundation.*; public class iTunesControl { public void play() { doScript("tell application \"itunes\" to play"); } public void pause() { doScript("tell application \"itunes\" to pause"); } public void next() { doScript("tell application \"itunes\" to next track"); } public void previous() {doScript("tell application \"itunes\" to previous track"); } private void doScript(String script) { // This creates a new NSAppleScript // object to execute the script NSAppleScript myScript = new NSAppleScript(script); // This dictionary holds any errors that are // encountered during script execution NSMutableDictionary errors = new NSMutableDictionary(); // Execute the script! myScript.execute(errors); } public static void main( String [] args ) { iTunesControl a = new iTunesControl(); a.pause(); } }
Hat vielleicht jemand eine Idee wo mein Fehler liegt?Code:# export CLASSPATH=/System/Library/Java: # javac iTunesControl.java # java iTunesControl
Danke für's grübeln
Jan
- 16.08.2006, 23:31 #2derJanInaktiv
- 18.08.2006, 22:09 #3Carmeliter-Renette
- Registriert
- 03.2004
- Beiträge
- 3.269
Mal 'ne Java-Laien-Frage: Sollte die main-Funktion nicht eine geschweifte Klammer weiter draussen sein? Oder ist es Absicht, dass die innerhalb der iTunesControl-Klasse definiert ist?
EDIT: Danke MatzeLoCal (s.u.)!Geändert von Peter Maurer (18.08.2006 um 23:14 Uhr) Grund: Wieder was dazugelernt.
- 18.08.2006, 23:11 #4
Nö, main() muss in der "Ladeklasse" sein.
ist das Standardgerüst.Code:public class MeineKlasse { public static void main(String[] args) { //hier passiert was } }le monde de matzelocal | /dev/blog | flickr | i.use.this | del.icio.us | facebook | twitter
die Straße ist nicht immer eben und grad deswegen: Auf das Leben
(jupiter jones - auf das leben)
- 19.08.2006, 09:19 #5
Deine Java-Klasse wird so nicht gefunden. Probier mal
java ./iTunesControl
wenn du in deren Verzeichnis bist.
- 19.08.2006, 09:57 #6
Also ich kann nur sagen, dass das bei mir alles super funzt...
le monde de matzelocal | /dev/blog | flickr | i.use.this | del.icio.us | facebook | twitter
die Straße ist nicht immer eben und grad deswegen: Auf das Leben
(jupiter jones - auf das leben)
- 19.08.2006, 12:42 #7derJanInaktiv
Erstmal danke an alle die sich gedanken zu dem Problem gemacht haben.
Die Klasse wird schon gefunden. Wenn ich mit System.out.println ein paar Debug-Meldungen mit einfügt, dann werden die auch brav, bis zum myScript.execute() in doScript(), ausgeführt.Code:$ java ./iTunesControl Exception in thread "main" java.lang.NoClassDefFoundError: //iTunesControl
Ich hab mir nochmal die Kommentar zu dem oben angegebenen Artikel durchgelesen. Ganz unten (Überschrift: " doesnt work for me") beschreibt auch jemand, dass es bei ihm klappt, wenn iTunes nicht gestartet ist. Das ist bei mir auch der Fall. Kann es sein, dass die Java/Applescript Schnittstelle etwas buggy ist? Wenn ich die Applescript Befehle bei geöffnetem iTunes im ScriptEditor ausführe, funktioniert es nämlich ...
Gibt es evtl noch Java Debug-Methoden, welche mir die einzelnen Schritte, bei der Kommunikation mit Applescript, ausgeben?
Jan
- 19.08.2006, 13:49 #8
Nö nö, das ./ kannst Du dir sparen.. das ist nicht von nöten.
le monde de matzelocal | /dev/blog | flickr | i.use.this | del.icio.us | facebook | twitter
die Straße ist nicht immer eben und grad deswegen: Auf das Leben
(jupiter jones - auf das leben)
- 19.08.2006, 13:53 #9
So, im Anhang ist nun mal die .java und die .class die ich daraus kompiliert habe.
Wie gesagt, alles von oben copy&paste. ... nach dem aufruf von
java iTunesControl dauert es einen klitzekleinen Moment (java muss ja gestartet werden) und dann is iTunes ruhig.le monde de matzelocal | /dev/blog | flickr | i.use.this | del.icio.us | facebook | twitter
die Straße ist nicht immer eben und grad deswegen: Auf das Leben
(jupiter jones - auf das leben)
- 19.08.2006, 17:33 #10derJanInaktiv
Wenn ich deine Java-Class starte, geht iTunes sofort auf pause, allerdings nur beim ersten mal.
Was mir allerdings gerade einfällt: welche Java-Version benutzt du? Ich bin irgendwann glaub ich mal manuell auf Java 1.5 gegangen. Kann es evtl daran liegen?
JanCode:$ java -version java version "1.5.0_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-112) Java HotSpot(TM) Client VM (build 1.5.0_06-64, mixed mode, sharing)
Ähnliche Themen
-
Java Problem (Can't start the AWT because Java was started on the first thread)
Von fourcorner im Forum Mac OS X DeveloperAntworten: 0Letzter Beitrag: 22.01.2006, 17:06


Zitieren




