Linux-Java-Anwendung unter freeBSD

mincer

Well-Known Member
Hi

Ich habe hier eine Linux-Java-Anwendung die ich gerne unter freeBSD starten würde.
Es handelt sich dabei um das grafische Konfigurationstool des Virenscanners. (Norman)

Die JRE1.5 für freeBSD habe ich installiert.

Wenn ich nun versuche die Applikation unter X mit java -jar applikation.jar zu starten erscheint folgende Fehlermeldung:

Failed to load Main-Class manifest attribute from applikation.jar

Anforderungen des Herstellers:
glibc version 2.2 or later
Sun JRE 1.4

Mein System:
freeBSD 6.2, diablo jre 1.5


1. Kann sich jemand vorstellen warum ich die jar-applikation nicht starten kann?
2. Hat das evtl. irgendetwas mit der Variable JAVA_HOME zu tun?
3. Was genau ist eigentlich glibc?

Danke für eure Hilfe

mInCEr
 
Für die weitere Fehlersuche wäre der Inhalt der Manifest-Datei interessant. Das Java-Archiv kann man mit jar -xvf auspacken. Dort gibt es im Verzeichnis META-INF eine Datei namens MANIFEST.MF

Viele Grüße

Rainer
 
Ich stimme heesen zu. In der MANIFEST.MF steht welche Klasse die main-Methode enthält die zum Starten verwendet werden soll.

Viele Grüße
 
Beim OP steht sie eben nicht im Manifest, und genau das besagt auch die genannte Fehlermeldung.

Wie kommste darauf? Die Fehlermeldung besagt lediglich dass das main-class-attribute nicht geladen werden konnte. Das muss nicht heissen dass dort nichts steht. Vielleicht handelt es sich um einen Tippfehler. Zudem hat der OP nicht geschrieben dass das Tool unter Linux nicht funktioniert also kann man davon ausgehen dass unter Linux die MANIFEST.MF zu funktionieren scheint, was jedoch etwas seltsam wäre.

Viele Grüße
 
Wenn glib_c benötigt wird, heißt das es gibt auch Linux-Binärcode. Kein reines Java. Und das bedeutet man muss ein Linux-JDK verwenden.
 
Wenn glib_c benötigt wird, heißt das es gibt auch Linux-Binärcode. Kein reines Java. Und das bedeutet man muss ein Linux-JDK verwenden.
Hmmm...ich bin mir zwar nicht ganz sicher aber eigentlich dürfte das JRE (nicht JDK) keine Rolle spielen, da plattformabhängiger Code in Java per JNI realisiert wird und nicht durch patchen des JRE. Sprich es müsste mit jedem nach Sun-Spezifikation implementiertem JRE laufen, da die Plattformabhängigkeit (sofern vorhanden) in der Applikation liegt.
Aber da kenne ich mich nicht so gut aus, weil ich es bisher vermeiden konnte plattformabhängige Java-Applikationen zu schreiben. ;)

Viele Grüße
 
Wie kommste darauf? Die Fehlermeldung besagt lediglich dass das main-class-attribute nicht geladen werden konnte. Das muss nicht heissen dass dort nichts steht. Vielleicht handelt es sich um einen Tippfehler.

Den Tippfehler will ich sehen ;-)

Entweder, da ist ein Main-Class: blubbs im Manifest, oder nicht. Wenn eins vorhanden ist, und z.B. lediglich die Klasse nicht stimmt, dann sollte es eine andere Fehlermeldung geben. Aber das ist alles nur Glaskugelguckerei, solange
der OP nicht endlich mal das Manifest postet.

Code:
unzip -p applikation.jar META-INF/MANIFEST.MF

Zudem hat der OP nicht geschrieben dass das Tool unter Linux nicht funktioniert also kann man davon ausgehen dass unter Linux die MANIFEST.MF zu funktionieren scheint, was jedoch etwas seltsam wäre.

In der wunderbaren Welt der Java-Software gehe ich inzwischen von gar nichts mehr aus.

Viele Grüße[/QUOTE]
 
also in der MANIFEST.MF steht:

Manifest-Version: 1.0
Created-By: 1.4.2_02 (Sun Microsystems Inc.)

Im Verzeichnis wo sich die Jar-Dateien befinden hat es noch gleichnamige bin's.
Beim Ausführen dieser kommt folgende Fehlermeldung:
./appliaktion
Exception in thread "main" java.lang.NoClassDefFoundError: Applikation

Kann über ein Linux-Binary überhaupt die java-VM von freeBSD aufgerufen werden? Oder muss evtl. was verlinkt werden?

In der Manifest steht was von Version 1.4. Ich habe hier aber JRE 1.5 am laufen, spielt das ne Rolle?
 
[SOLVED]

Konnte das Problem lösen.

Habe von der Java-Webseite die JRE 1.5 für Linux herunter geladen.
Habe diese nach /compat/linux/usr/local/java extrahiert.
Dann die Linux-bash gestartet /compat/linux/bin/bash
Die JAVA_HOME Variable mit export JAVA_HOME=/usr/local/java gesetzt
Dann konnte ich die Applikationen starten.

Kann ich irgendwo die Variable JAVA_HOME für die Linux Umgebung dauernd setzten?
 
@mincer
Du hättest das Linux-JDK auch aus den Ports installieren können.


Hmmm...ich bin mir zwar nicht ganz sicher aber eigentlich dürfte das JRE (nicht JDK) keine Rolle spielen, da plattformabhängiger Code in Java per JNI realisiert wird und nicht durch patchen des JRE. Sprich es müsste mit jedem nach Sun-Spezifikation implementiertem JRE laufen, da die Plattformabhängigkeit (sofern vorhanden) in der Applikation liegt.
Aber da kenne ich mich nicht so gut aus, weil ich es bisher vermeiden konnte plattformabhängige Java-Applikationen zu schreiben. ;)

Viele Grüße
Wenn die glib_c benötigt wird ist es aber nicht mehr Plattform-unabhängig. Viele hersteller bauen gern hier und da etwas C oder C++ dazu, keine Ahnung warum.
 
mal slightly-ot: Wenn jetzt Java in den neuen Versionen vollkommen opensource wird, werden dann nicht die ganzen klone verschwinden? (wie zb diablo linux). und nativ sollte man das doch dann auch bauen können.
 
mal slightly-ot: Wenn jetzt Java in den neuen Versionen vollkommen opensource wird, werden dann nicht die ganzen klone verschwinden? (wie zb diablo linux). und nativ sollte man das doch dann auch bauen können.
??? Ich dachte man kann es schon längst selbst bauen. Nur dauert es eben ewig und braucht ordentlich Speicher. Die OpenBSD-Leute klagen doch ständig darüber. Der Witz an den Paketen ist ja eben dass man sie nicht selbst bauen muss. Oder hab ich was falsch verstanden?

Viele Grüße
 
mit nativ meinte ich auch eigentlich vollautomatisch, ohne das umständlich bei sun runterladen zu müssen, und bestätigen usw.
und ich dachte eigentlich total opensource wird es erst aber java 1.6?
 
Zurück
Oben