1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Probleme mit java Programmen

Dieses Thema im Forum "macOS & OS X" wurde erstellt von NEtX, 03.10.05.

  1. NEtX

    NEtX Gast

    Hallo,

    Seitdem ich meinen Mac vor ca. einem Monat neu aufgesetzt habe (aktueller Stand 10.4.2 mit Software updatet upgedatet), funktionieren einige Programme nicht mehr, oder nur mehr teilweise. Betroffen sind vor allem java Programme, wie BlueJ, JJ Edit (startet überhaupt nicht) und Netbeans (alles java IDEs).
    BlueJ und Netbeans starten zwar, frieren aber ein und lassen sich nich bedienen. Ich muss sie dann mit "Sofort beenden" schließen. In /Programme/Dienstprogra/Java passiert dasselbe mit dem Configtool "Java 1.4.2 Plugin Einstellungen".
    Hingegen Eclipse funktioniert einwandfrei.
    Ein weiteres Problem besteht mit dem Programm "Latein-Wörterbuch", welches sich nur in einem Image eingebunden starten lässt. Kopiere ich es auf die festplatte hüpft es nur 2mal im dock und verschwindet wieder. Leider glaube ich dass es sich bei diesem Programm um kein java applet handelt (Unter meinem früheren OSX, auch 10.4.2 hat es problemlos funktioniert).

    Der Aufruf "java -version" bringt folgendes zutage:

    Code:
    :~ ###$ java -version 
    java version "1.4.2_09"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-232)
    Java HotSpot(TM) Client VM (build 1.4.2-54, mixed mode)
    :~ ###$ 
    Weiters habe ich bereits das "Java 1.3.1 and 1.4.2 Release 2 Tiger" update heruntergeladen und installiert, sowie die preview "J2SE 5.0 Release 1". Trotz erfolgreicher installation konnte ich keine Lösung erzielen.

    Eine eventuelle Lösung habe ich bei einem Beitrag zu OSX 10.3.9 hier gefunden. Leider konnte ich diesen workarround noch nit ausproblieren.

    Hoffend auf einige Tips,
    Nikolaus
     
  2. NEtX

    NEtX Gast

    kompilieren mit dem javac compiler in der shell funzt komischerweise ohne probleme.
    die probleme treten bei allen benuzern auf, also scheint das problem tiefer zu liegen.
     
  3. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    Die Rechte hast Du aber schon reparieren lassen?

    Was passiert, wenn Du die jeweiligen Programme vom Terminal aus startest?

    Gruß,

    .commander
     
  4. NEtX

    NEtX Gast

    danke für den tipp!

    die rechte habe ich schon mit dem Festplattendienstprogramm repariern lassen

    bei JJ Edit passiert folgendes

    Code:
    :/Applications/JJ Edit.app/Contents/MacOS ###$ ./JJ\ Edit 
    -[NSJavaVirtualMachine initWithClassPath:] FATAL: cannot initialize ObjCJava. Exit
    :/Applications/JJ Edit.app/Contents/MacOS ###$
    
    Netbeans (bei BlueJ gleich) musste ich mit ^C beenden

    Code:
    :/Applications/NetBeans.app/Contents/Resources/NetBeans/bin ###$ ./netbeans 
    ^C:/Applications/NetBeans.app/Contents/Resources/NetBeans/bin ###$ 
     
  5. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    Das schaut nicht schön aus. Offensichtlich ist im Java - Framework irgendetwas kaputt oder die Zugriffsrechte passen nicht. Wie schauts denn mit einfachen selbstgestrickten Programmen aus? Da ja ein java -version funktioniert, könnte es sein, daß nicht - grafische Programme laufen? Und somit Du ein JFrame machst, die Applikation steht?

    Gruß,

    .commander
     
  6. NEtX

    NEtX Gast

    hab jetz ein 2 einfache programme ausprobiert:

    hello world funktioniert ohne probleme

    Code:
    :/Applications/BlueJ 2.0.5/examples/hello niko$ java Hello       
    Hello, world
    :/Applications/BlueJ 2.0.5/examples/hello niko$
    und eins mit JFrame (Bsp von Wikipedia ), bei dem folgender fehler schon beim übersetzen auftritt:

    Code:
    :/java ###$ javac test.java 
    test.java:27: ';' expected
            javax.swing.SwingUtilities.invokeLater(runnable);
            ^
    1 error
    :/java ###$ 
     
  7. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    LOL! Der Wikipedia Code ist syntaktisch nicht korrekt.

    So muss das ausschauen, dann kompilierts auch:

    Code:
    import javax.swing.*;
    public class HelloWorldSwing {
        /**
         * Erstellt die grafischen Komponenten und zeigt
         * sie an.
         */
        private static void createAndShowGUI() {
            //Erstellt das Fenster
            JFrame frame = new JFrame("HalloWeltSwing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            //Fügt den "Hallo Welt"-Text hinzu
            JLabel label = new JLabel("Hallo Welt");
            frame.getContentPane().add(label);
    
            //Zeigt das Fenster an
            frame.pack();
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            Runnable runnable = new Runnable() {
              public void run() {
                createAndShowGUI();
              }
            };
            javax.swing.SwingUtilities.invokeLater(runnable);
        }
    }
    Probiers mal damit.
     
  8. NEtX

    NEtX Gast

    hab den code um den strichpunkt ergänzt, funzt aber immer noch net, jetz mault er wegen einer klammer,

    Code:
    :/java ###$ javac test.java
    test.java:10: ')' expected
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS  E);
                                                                ^
    1 error
    :/java ###$ javac test2.java 

    naja egal

    hab mir ein einfaches applet von hier runtergeladen. Das kann er jetz richtig compilieren, aber nicht ausführen.

    Code:
    :/java/Wuerfel niko$ javac Wuerfel.java 
    :/java/Wuerfel ###$ java Wuerfel.class 
    Exception in thread "main" java.lang.NoClassDefFoundError: Wuerfel/class
    :/java/Wuerfel ###$ 
     
  9. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    Gib mal nur

    'java Wuerfel'

    ein, ohne .class
     
  10. Sir Q

    Sir Q Rheinischer Winterrambour

    Dabei seit:
    12.04.05
    Beiträge:
    921
    Applets lassen sich nicht einfach so "aussführen" - die IDE kann das Applet in einem Appletrunner ausführen - aber dann in der IDE. Oder du baust sie eine Webseite ein.

    Wenn es auch bei Java eine Betrebung zur Abwärzkompatibilität gibt, kannst du einen für 1.5. geschriebenen Code nicht mit 1.4. compilieren - unter umständen klappt das zwar - weil einige in 1.5. eingeführte konstruktre intern umgewandelt und 1.4. konform ausgeführt werden, aber mitunter geht es schlicht und ergreifend nicht.

    Auch können unter 1.5. compilierte Klassen nicht perse von einer 1.4. VM ausgeführt werden ...

    ~

    Da ich hauptsächlich unter 1.5. entwickle, hin und wieder aber auch "alte" 1.4.2. Programme warte - ohne sie auf 1.5. umzusetzen - mache ich folgendes. Zugegeben: etwas tricky - aber bei mir quasi-alltagstauglich ...

    Unter /System/Library/Frameworks/JavaVM.framework/Versions finden sich einige verzeichnisse und *tada* symbolische Links - aliasse - die sich verbiegen lassen.

    Ein ls -ls zeigt dann:
    Ruft mann java -version auf, sieht mann (meines erachtens standardmäßig)
    Wenn mann das neue Java 1.5. installiert hat, und das lieber benutzen will, kann man dann folgendes machen:

    • mit VORSICHT und sudu su wird mann erst mal superuser dun kann dann Current und CurrentJDK löschen.
    • mit: ln -s 1.5 CurrentJDK und ln -s 1.5. Current werden die Links für Current und CurrentJDK neu erstellt und verweisen dann auf die 1.5

    Ein aufruf von java -version liefert dann:
    ~

    Per-Mausklick-startbare Java-Programme macht man am besten als JAR-Archiv. Der Befehl ist jar -cfm programm.jar [MANIFEST.MF] [Klassenverzeichnis] - das Manifest ist eine textdatei und sollte so aussehn:
    (Achtung: namederklasse ohne .class oder .java :)

    ~

    In der IDE kann mann eintellen, mit welchem JDK das projekt compiliert und ausgeführt werden soll.
    NetBeans ist sozimlich das Letzte - perönsliche Meinung - gleich gefolgt von Borland-J-Builder. Xcode ist nicht nur kostenlos (die TCO liegt genaugeommen deutlich höher, aber hey, MS liefert garkeine IDE kostenlos mit :) sondern auch für Java recht annehmbar.
    Eclipse (3.1) ist auf meinem 2x2.5 G5 mit 2.5 GB Ram sehr langsam - aber stabiel. Persönliche lieblings IDE ist IntelliJ ...
     
    commander und xgx7 gefällt das.
  11. NEtX

    NEtX Gast

    hallo,

    @commander
    mit java würfel gehts, dann hängt die app aber, genau wie die anderen Java Programme, egal ob ich sie mit dem Terminla, oder durch doppelklick im Desktop öffne.

    @Sir Q
    danke mal für den tip, bei mir klappts leider nicht java auf 1.5 umzustellen
    Code:
    :/System/Library/Frameworks/JavaVM.framework root# ls -ls
    total 20
    2 lrwxr-xr-x   1 root  wheel    27 Oct  2 22:42 Classes -> Versions/CurrentJDK/Classes
    2 lrwxr-xr-x   1 root  wheel    28 Oct  2 22:42 Commands -> Versions/CurrentJDK/Commands
    2 lrwxr-xr-x   1 root  wheel     4 Oct  4 17:07 Current -> 1.5.
    2 lrwxr-xr-x   1 root  wheel     3 Oct  4 17:07 CurrentJDK -> 1.5
    2 lrwxr-xr-x   1 root  wheel    24 Oct  2 22:43 Headers -> Versions/Current/Headers
    2 lrwxr-xr-x   1 root  wheel    24 Oct  2 22:42 Home -> Versions/CurrentJDK/Home
    2 lrwxr-xr-x   1 root  wheel    23 Oct  2 22:43 JavaVM -> Versions/Current/JavaVM
    2 lrwxr-xr-x   1 root  wheel    29 Oct  2 22:42 Libraries -> Versions/CurrentJDK/Libraries
    2 lrwxr-xr-x   1 root  wheel    26 Oct  2 22:43 Resources -> Versions/Current/Resources
    2 drwxr-xr-x   6 root  wheel  1024 Oct  3 18:44 Versions
    :/System/Library/Frameworks/JavaVM.framework root# java -version
    java version "1.4.2_09"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-232)
    Java HotSpot(TM) Client VM (build 1.4.2-54, mixed mode)
    :/System/Library/Frameworks/JavaVM.framework root#  
    java programme mit gui funktioniern bei mir nicht, das steht jetzt einmal fest. wie kann ich jetzt weiter vorgehn, ist es möglich das komplette java packet für den mac downlzuloaden um damit mein altes zu ersetzen?
    wie könnte ich das vorhandene framewörk reparieren?
    Würde eine umsellung auf Java 5 das problem umgehn?

    Danke für die schnelle Hilfe!
     
  12. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    Nachdem Apple unter Swing eine komplett eigene, native Implementierung geschraubt hat (blockier mal den AWT - Event Dispatcher und dann lerne staunen ;) ), vermute ich mal, daß es zwischen der 1.4 und der 1.5 tatsächlich native Unterschiede gibt.... ich habe mich allerdings mit der 1.5 bisher noch garnicht auseinandergesetzt, da das mit meinem momentanen Projekt, in dem es etliche Source-Generatoren und v.a. einen Sourcecode-Parser gibt, gar nicht lustig wird.

    Die notwendige Version des jre steht übrigens im plist File, das bei den gebundelten Applikationen unter Programm.app/Contents/Info.plist, irgendwo gibt es eine VMVersion-Property.

    Mit dem umbiegen müsste man das schon hinbekommen, daß Du nicht mal ein JFrame aufmachen kannst, kommt mir dennoch seltsam vor, denn normalerweise steigt java mit irgendeiner Classversion - Verletzung aus, wenn die Classfiels nicht zueinander passen, oder mit einem LinkageError, fall native Implementierungen nicht passen. Seltsam, das...

    Gruß,

    .commander
     
  13. Sir Q

    Sir Q Rheinischer Winterrambour

    Dabei seit:
    12.04.05
    Beiträge:
    921
    Du mußt dich im Verzeichnis

    /System/Library/Frameworks/JavaVM.framework/Versions

    befinden - du hast die Links also ein director zu früh erstellt - und da nutzen sie ganichts, weil die alten Links noch immer da sind, und darauf beziehen sich die alten Links - wie du ja auch selbst zeigst:

    2 lrwxr-xr-x 1 root wheel 26 Oct 2 22:43 Resources -> Versions/Current/Resources

    Resources springt in Versions/Current/Resources - und DIESES Current zeigt auf das 1.4 - dieses Current must du auf 1.5. verbiegen.

    ~

    Auch mit 1.4. klappen Swing-Projekte ganz wunderbar. Ich habe ein Tool (was hautsächlich unter Windows eingesetzt wird) anfänglich in Java unter Linux (Debian) entwickelt und dann unter Tiger mit 1.4.2 weiterentwickelt. Es hat eine schnuffige Swing-Gui und kann Datein per Drag&Drop öffnen - sowohl unter MacOS als auch unter Windows ...
     
  14. commander

    commander Baldwins roter Pepping

    Dabei seit:
    25.02.04
    Beiträge:
    3.210
    Klar geht Swing unter 1.4 einwandfrei, selbst wenn man es mit einem eigenen Look & Feel vollkommen verbiegt - deshalb befürchte ich ja auch, dass es sich nicht um ein Versionsproblem handelt - sondern in der darunterliegenden VM - Implementierung liegt, für die sich Apple einiges hat einfallen lassen.

    Du solltest überprüfen, welche Version von den Programmen jeweils benötigt wird. Falls ein Zurückgehen auf 1.4.2 bzw. ein Hochgehen auf 1.5 nützt, dann ist ja alles gut! :)

    Gruß,

    .commander
     

Diese Seite empfehlen