jar einfach so übernehmen und ausführen, das geht doch nicht?

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

ich habe soeben eclipse installiert, erstes Programm damit erstellt, inklusive Pakete usw. Einige logische Fragen habe ich:

1. Bei Eclipse ist ja ein Workspace-Path zu setzen.
2. In diesem Workspace befinden sich dann all die Projekte, deren Source-Codes usw.

Angenommen, ich erstelle ein JAR-File (ratna.jar) von meinemProgramm.java, was abhängig von anderen Projekten und externen JAR-Files ist. Kann ich denn ratna.jar ohne weiteres auf ein Linux-Filesystem kopieren und verwenden? Gibt's hierbei Überlegungen wegen der Pfade?

Vielen Dank für Eure Hilfe.

Viele Grüße aus Rheinland,

Eure Ratna:)
 
Angenommen, ich erstelle ein JAR-File (ratna.jar) von meinemProgramm.java, was abhängig von anderen Projekten und externen JAR-Files ist. Kann ich denn ratna.jar ohne weiteres auf ein Linux-Filesystem kopieren und verwenden? Gibt's hierbei Überlegungen wegen der Pfade?

Das kommt darauf an:
  1. Dein Programm muß grundsätzlich unter Linux laufen.
  2. Entweder muß das Jar alle Abhängigkeiten enthalten oder aber sie müssen per Hand mit auf das System kopiert werden.

Wenn dein jar alle Abhängigkeiten enthalten soll, dann kannst du es über die eclipse-exportfunktion erstellen. Da mußt du dann "nur" ein Runnable-Jar erzeugen und die Option "Extract required libraries into generated jar" anwählen.
 
Ergänzend:
Ja, auf ein Linuxsystem kopieren geht.
Die Abhängigkeiten müssen in den Verzeichnissen des Classpath enthalten sein,
also a) müssen sie mitkopiert werden (oder direkt in der einen Jar drin sein)
und b) in einem der (relativen) Verzeichnisse,
die man als CP in der manifest-Datei des Jar angegeben hat.
zB. selbes Verzeichnis (also .) wie dir Jar-Datei ist schon mal nicht verkehrt.

Und man kann Javaprogramme schreiben, die unter Windows gut funktionieren
und unter Linux nicht...Wenn das Programm zB. mit Fehlermeldung abbricht,
wenn es das Verzeichnis "C:\Windows" nicht findet.
Dass sowas zu vermeiden ist sollte klar sein.
 
Hallo Thinker und sheel,

das heißt, es gibt 2 Alternativen:
1. Abhängigkeiten in dem Jar-File müssen definiert und enthalten sein.
2. Abhängigkeiten müssen per Hand ins Filesystem von Unix kopiert werden.

Zu 1.)
Kann man dies mittels einem Ant-Skript schaffen?

Vielen Dank Euch.

Viele Grüße aus Rheinland
 
Hallo Thinker und sheel,

das heißt, es gibt 2 Alternativen:
1. Abhängigkeiten in dem Jar-File müssen definiert und enthalten sein.
2. Abhängigkeiten müssen per Hand ins Filesystem von Unix kopiert werden.

Zu 1.)
Kann man dies mittels einem Ant-Skript schaffen?

Vielen Dank Euch.

Viele Grüße aus Rheinland

Sachlich richtig, entweder sind die enthalten oder aber sie müssen manuell reinkopiert werden.
Und mittels ant kann man das machen, ja, indem man dem Jar-Task ein zipgroupfileset übergibt, wenn ich mich recht erinnere
 
Hallo Thinker,

mhh.. eine Sache habe ich noch nicht verstanden:
Abhängigkeiten manuell reinkopieren. Meinst Du damit, auf dem Unix-System all die Pfade zu erstellen entsprechend meiner Verzeichnisstruktur in Windows, wo ich die Programme entwickelte?

Viele Grüße aus Rheinland,

Eure Ratna
 
Nein, die jars müssen ja nur im Classpath aufgelistet sein, du mußt also dafür sorgen, daß dieser unter Linux stimmt.

wenn du dirs einfach machen willst, dann legst du unter Windows eine Verzeichnisstruktur an, die es auch unter Linux gibt. Aber das ist kein Muß.
 
Hallo Thinker,

zu der schwierigeren Alternative:

das heißt, wenn ich zum Beispiel unter Windows einen externen Jar verwende und dieser steht unter dem Pfad bzw. Package com.google.gwt.user.User. Wie muss dann die CLASSPATH-Variable unter Linux aussehen?

Vielen Dank.

Viele Grüße aus Rheinland,

Eure Ratna
 
Hallo zusammen,

am besten mache ich mal ein konkretes Beispiel. Mein Hauptprogramm heißt Hauptprog.java, das so aussieht:

import de.tutorials.Classname;

public class Hauptprog{
...
...
}

Die externe Klasse Classname ist enthalten in dem JAR-File de.tutorials.jar

Ich erstelle nun für mein Hauptprog das JAR-File namens Hauptprog.jar

Jetzt geht es ums Kopieren auf das Linux-Filesystem:
1. Wo soll ich nun de.tutorials.jar hinkopieren?
2. Wie soll die CLASSPATH-Umgebungsvariable aussehen?

Vielen lieben Dank.

Viele Grüße aus Rheinland,

Eure Ratna
 
Zurück