Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12
  1. #1
    derJan
    Inaktiv

    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.
    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();
       }
    }
    Der Build Prozess wurde mit folgenden Befehlen durchgeführt.

    Code:
    # export CLASSPATH=/System/Library/Java:
    # javac iTunesControl.java
    # java iTunesControl
    Hat vielleicht jemand eine Idee wo mein Fehler liegt?
    Danke für's grübeln

    Jan

  2. #2
    derJan
    Inaktiv
    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

  3. #3
    Carmeliter-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.

  4. #4
    Rheinischer Bohnapfel Avatar von MatzeLoCal
    Registriert
    01.2004
    Ort
    Bischofsheim/Rhön, Bayern
    Beiträge
    2.421
    Nö, main() muss in der "Ladeklasse" sein.

    Code:
    public class MeineKlasse {
    
        public static void main(String[] args) {
         //hier passiert was
        }
    }
    ist das Standardgerüst.
    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)

  5. #5
    Vollbrechts Borsdorfer Avatar von MacMark
    Registriert
    01.2005
    Ort
    Scheeßel
    Alter
    43
    Beiträge
    4.468
    Deine Java-Klasse wird so nicht gefunden. Probier mal
    java ./iTunesControl
    wenn du in deren Verzeichnis bist.
    macmark.de OS X: Hilfe, Tips & Technik
    MacMark auf Twitter
    Erklärung meines Avatars

  6. #6
    Rheinischer Bohnapfel Avatar von MatzeLoCal
    Registriert
    01.2004
    Ort
    Bischofsheim/Rhön, Bayern
    Beiträge
    2.421
    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)

  7. #7
    derJan
    Inaktiv
    Erstmal danke an alle die sich gedanken zu dem Problem gemacht haben.

    Code:
    $ java ./iTunesControl
    Exception in thread "main" java.lang.NoClassDefFoundError: //iTunesControl
    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.

    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

  8. #8
    Rheinischer Bohnapfel Avatar von MatzeLoCal
    Registriert
    01.2004
    Ort
    Bischofsheim/Rhön, Bayern
    Beiträge
    2.421
    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)

  9. #9
    Rheinischer Bohnapfel Avatar von MatzeLoCal
    Registriert
    01.2004
    Ort
    Bischofsheim/Rhön, Bayern
    Beiträge
    2.421
    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.
    Angehängte Dateien Angehängte Dateien
    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)

  10. #10
    derJan
    Inaktiv
    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?
    Code:
    $ 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)
    Jan

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 22.01.2006, 17:06

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •