• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Probleme mit java Programmen

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
 

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.
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Die Rechte hast Du aber schon reparieren lassen?

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

Gruß,

.commander
 

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 ###$
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
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
 

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 ###$
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
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.
 

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 ###$
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Gib mal nur

'java Wuerfel'

ein, ohne .class
 

Sir Q

Rheinischer Winterrambour
Registriert
12.04.05
Beiträge
923
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:
drwxr-xr-x 11 root wheel 374 Oct 4 15:25 .
drwxr-xr-x 10 root wheel 340 Sep 14 21:25 ..
lrwxr-xr-x 1 root wheel 5 Sep 14 21:25 1.3 -> 1.3.1
drwxr-xr-x 8 root wheel 272 May 2 15:07 1.3.1
lrwxr-xr-x 1 root wheel 5 Sep 14 21:25 1.4 -> 1.4.2
drwxr-xr-x 8 root wheel 272 Oct 4 15:31 1.4.2
lrwxr-xr-x 1 root wheel 5 Jun 30 14:21 1.5 -> 1.5.0
drwxr-xr-x 9 root wheel 306 Oct 4 15:25 1.5.0
drwxr-xr-x 6 root wheel 204 Sep 23 13:19 A
lrwxr-xr-x 1 root wheel 3 Oct 4 15:25 Current -> A
lrwxr-xr-x 1 root wheel 5 Sep 14 21:25 CurrentJDK -> 1.4.2
Ruft mann java -version auf, sieht mann (meines erachtens standardmäßig)
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)
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:
java version "1.5.0_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-56)
Java HotSpot(TM) Client VM (build 1.5.0_02-36, mixed mode, sharing)
~

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:
Manifest-Version: 1.0
Created-By: DEIN NAME
Main-Class: package.package.namederklasse
(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 ...
 
  • Like
Reaktionen: commander und xgx7

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!
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
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
 

Sir Q

Rheinischer Winterrambour
Registriert
12.04.05
Beiträge
923
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 ...
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Sir Q schrieb:
[...]
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 ...

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