Plattformunabhänginge Ausführung einer .jar Datei

Hugo811

Neues Mitglied
Hallo Forenmitglieder,

Ich hab da ein spezielles Problem.
Ich musste ein Kommandozeilenapplikation schreiben. Diese hab ich dann als .jar exportiert und wird per ANT deployed.

Das Problem liegt in der Schnittstelle eines anderen Programmes.
Das andere Programm kann andere ".exe" Dateien aufrufen und ausführen lassen und nimmt den StatusCode an und vergleicht diesen gegen einen bestimmten Wert, den man konfigurieren kann.

Dieses andere Programm ist nicht in der Lage ".jar" Dateien auszuführen (mangelhaft Programmiert).
Es erkennt die Kommandozeilenargumente die vor dem .exe Pfad kommen nicht an. (java -jar ...)

Meine Idee lag darin die .jar einfach durch eine .bat über dieses besagt Programm aufrufen zu lassen und den StatusCode der .jar über die .bat zurückzugeben. Das funktioniert natürlich.

Problem ist, dass das ganze auch unter Linux funktionieren muss. Soweit ich weiß gibt es keinen .bat interpreter unter einem Linux.

Ich darf auch weder Cygwin o.ä., noch Python Runtime auf dem Rechner installieren.

Konkret suche ich nach einer Lösung ein einziges Skript zu schreiben, dass sowohl unter Linux als auch Windows interpretiert werden kann auch wenn dieses Skript erst zur Laufzeit erzeugt werden muss mit >> z.B..

Ich weiß noch nicht ob das überhaupt möglich ist und möchte an der Stelle sagen :
"Windows batch = fail!"

Danke

Gruß
 

r.w.

Bekanntes Mitglied
Skript-Dateien gibt es natürlich auch unter Linux. Da darf die Endung
auch .bat, oder .cmd sein. Wichtig ist nur, dass der Datei das Recht
zum Ausführen mitgegeben wird. Das geht mit der Anweisung "chmod".

So gesehen könnte das funktionieren, da der Aufruf des Java-Interpreters,
so weit ich weiß, in beiden Systemen gleich ist. Probleme gibt es erst bei
System-spezifischen Anweisungen oder Pfad-Angaben.

Ich hoffe, das hilft Dir weiter.

VG ROlf
 

Andi_CH

Top Contributor
Das tönt für mich so ähnlich wie: "Ich schreibe jetzt ein Programm, dass sowohl von einem C++Komplier wie auch von Java verarbeitet werden können muss."
Windows und Linux haben komplett unteschiedliche Vorstellungen von Scripts, aber falls man das in einem Script unterscheiden kann, wäre ich sehr daran interessiert zu erfahren wie das geht.

Ich würde vorschlagen dass du zwei Scripts erstellst und beide heissen xxx.bat, haben aber BS-spezifischen Inhalt und da dafür sorgst, dass jeweils das entsprechende da hinkommt wo es hingehört. (Linux ist es egal wenn .xyz am Ende steht)

oder:

Die Scripts haben unterschiedliche Namen und du fragst im aufrufenden Programm ab auf welchem BS es läuft (geht sicher aber frag mich nicht wie :oops:) und rufst dann das entsprechende Script auf.
 

r.w.

Bekanntes Mitglied
Windows und Linux haben komplett unteschiedliche Vorstellungen von Scripts, aber falls man das in einem Script unterscheiden kann, wäre ich sehr daran interessiert zu erfahren wie das geht.

Da muss man halt mal etwas kreativ sein und probieren. ;-)
Es gibt Übereinstimmungen und Differenzen und man kann beides nutzen.

Ein Beispiel:

Legt man in einem Verzeichnis die folgenden 3 Dateien an und versieht sie unter Linux/Unix per chmod mit der Berechtigung Ausführen,
wird unter Linux die Datei test und unter Windows die Datei test.bat ausgeführt. Grund ist, dass Windows einfach ausgedrückt
automatisch nach passenden Dateien mit der Endung (.com, .exe, .bat, .cmd) sucht und dann diese ausführt.

Datei go.bat
Code:
@ECHO OFF
./test

Datei test
Code:
echo Ich bin Unix

Datei test.bat
Code:
echo Ich bin Windows

Getestet auf meinem Mac und einem Windows 7 PC.

BTW: "./" als Pfadangabe vor dem Dateinamen führt zwar auf der Kommandozeile
zu einem Fehler (Datei nicht gefunden), funktioniert aber in einem Skript. ;-)


VG ROlf
 

Andi_CH

Top Contributor
Ein Script das einen Fehler verursacht - igitt - da sträuben sich mir alle Haare. (Ok, ich bin auch einer, der keine Warnungen im Eclipse sehen will.) lass das go.bat doch einfach weg, das aufrufende Programm hat doch locker die Möglichkeit nach BS zu unterscheiden und das richtige Script zu starten oder eben - du kopierst nur das hin, was da hingehört!

By the way : Warum muss es überhautp ein Script sein?
 

r.w.

Bekanntes Mitglied
Sorry, aber ich hab nirgendwo angemerkt, dass mein Skript einen Fehler verursacht. ;-)


Zudem schrieb Hugo811:
...

Das Problem liegt in der Schnittstelle eines anderen Programmes.
Das andere Programm kann andere ".exe" Dateien aufrufen und ausführen lassen und nimmt den
StatusCode an und vergleicht diesen gegen einen bestimmten Wert, den man konfigurieren kann.

Dieses andere Programm ist nicht in der Lage ".jar" Dateien auszuführen (mangelhaft Programmiert).
Es erkennt die Kommandozeilenargumente die vor dem .exe Pfad kommen nicht an. (java -jar ...)

...

Daraus entnehme ich, dass er keinen Einfluß auf das aufrufende Programm hat,
sondern nur dessen vorhandene Schnittstelle für den Aufruf seines Programms
nutzen kann. Daher kann er dem Aufrufer auch nicht beibringen, zwischen den OS
zu unterscheiden.

Aber nichts für Ungut.
Zumal mir die ganze Aufgabenstellung sowieso noch etwas suspekt ist.
Das aufrufende Programm läuft doch entweder unter Window - wo es sicher nur
Windows-Programme starten wird - oder unter Linux, wo Linux-Anwendungen
gestartet werden. Beides ist doch eher unwahrscheinlich. Und wenn von einem
Windows-Programm ein weiteres unter Linux gestartet werden soll, geht das eh
nicht einfach so über ein Skript. Vielleicht fehlen aber auch nur ein paar
Hintergrundinformationen. ;-)


VG und eine schönes WE,
ROlf
 

datafiddler

Mitglied
...Das Problem liegt in der Schnittstelle eines anderen Programmes.
Das andere Programm kann andere ".exe" Dateien aufrufen und ausführen lassen und nimmt den StatusCode an und vergleicht diesen gegen einen bestimmten Wert, den man konfigurieren kann.

Dieses andere Programm ist nicht in der Lage ".jar" Dateien auszuführen (mangelhaft Programmiert).
Es erkennt die Kommandozeilenargumente die vor dem .exe Pfad kommen nicht an. (java -jar ...)

Die ausgeführte exe heisst "java" ( vermutlich genaugenommen java.exe ), alles andere sind nur Zusatzparameter. Falls deine "mangelhaft Programmierte" Umgebung beliebig viele Start-Parameter zulässt, sehe ich das Problem nicht.


Im übrigen Danke an r.w. für seinen Vorschlag der plattformunabhängigen .bat Datei. Nicht zielführend, aber eine sehr hübsche Idee :lol:
 

r.w.

Bekanntes Mitglied
Im übrigen Danke an r.w. für seinen Vorschlag der plattformunabhängigen .bat Datei. Nicht zielführend, aber eine sehr hübsche Idee :lol:

Nicht zielführend? Vielleicht in diesem Fall, aber es ist eine funktionierende Skriptweiche,
die man auf der Linux-Konsole genauso aufrufen kann, wie von einem Netzwerk-PC
unter Windows über eine Samba-Freigabe. Getestet! ;-)


Dieses andere Programm ist nicht in der Lage ".jar" Dateien auszuführen (mangelhaft Programmiert).
Es erkennt die Kommandozeilenargumente die vor dem .exe Pfad kommen nicht an. (java -jar ...)
<-
Die ausgeführte exe heisst "java" ( vermutlich genaugenommen java.exe ), alles andere sind nur Zusatzparameter. Falls deine "mangelhaft Programmierte" Umgebung beliebig viele Start-Parameter zulässt, sehe ich das Problem nicht.

:lol:
 

freez

Top Contributor
Wenn ich dein Problem mal zusammenfassen darf: Du möchtest eine Software entwickeln und auf unterschiedlichen Betriebssystemen laufen lassen. Du suchst eine Möglichkeit, wie du mit wenig Aufwand dies bewerkstelligst.
Glückwunsch ... du bist bei Java schon genau richtig, weil sie auf fast jedem Computer der Welt laufen kann :).
An irgendeiner Stelle musst du aber einen betriebssystemspezifischen Aufruf sicherstellen. Das ist nun der sehr sehr sehr kleine Aufwand (gemessen an der Software, die extra für ein Betriebssystem kompiliert wird), den man noch damit hat.

Schreibe ein Script extra für jedes Betriebssystem, was du unterstützen willst. Irgendwann kommt man nunmal auf dem Betriebssystem an.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Fehlermeldung bei Ausführung von .jar-Datei Allgemeine Java-Themen 9
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
M Webservice timeout bei Ausführung der .jar Allgemeine Java-Themen 3
L Fehler bei der Ausführung einer Jar Allgemeine Java-Themen 2
S Fehlermeldungen erscheinen erst in der Ausführung des Programms Allgemeine Java-Themen 11
A einmalige Ausführung eines Methodenabschnittes Allgemeine Java-Themen 3
E Threads Ausführung in Threads ist langsamer als ohne Threads Allgemeine Java-Themen 13
B Ungewollte mehrmalige ausführung des codes Allgemeine Java-Themen 10
R Internetverbindung weg bei ausführung Allgemeine Java-Themen 3
W Deserialisierung und Ausführung Allgemeine Java-Themen 2
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10
J Wie die gleichzeitige Ausführung mehrerer Tasks trotz Multithreading verhindern? Allgemeine Java-Themen 2
Daniel_L Mehrfache Ausführung desselben Threads/Tasks verhindern? Allgemeine Java-Themen 4
V Parallele Ausführung Allgemeine Java-Themen 8
D Eclipse-build vs. Jar-Ausführung Allgemeine Java-Themen 3
V Ausführung Client- oder Serverseitig? Allgemeine Java-Themen 13
I Thread eine bestimmte Zeit zur Ausführung geben Allgemeine Java-Themen 2
R ClientHTTPRequest - bei mehrfacher Ausführung? Allgemeine Java-Themen 2
K Richtige JVM für jar Ausführung? Allgemeine Java-Themen 4
F JAR-Datei-Ausführung löst Fehler aus Allgemeine Java-Themen 5
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
T JNA, Aufruf der Funktionen einer dll Allgemeine Java-Themen 5
I Vom Monolith zu Services in einer Webseite Allgemeine Java-Themen 1
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Wie kann ich den Wert aus einer If abfrage ausgeben Allgemeine Java-Themen 23
S HTML einer Webseite 1:1 so bekommen wie es auch der Browser anzeigt? Allgemeine Java-Themen 14
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
D Abbruch einer ViewScoped Bean in Arbeit Allgemeine Java-Themen 2
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
Lukas2904 Wie kann man cps (ClicksPerSecond) in einer GUI anzeigen lassen? Allgemeine Java-Themen 4
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
N BlueJ Implementation einer Analoguhr Allgemeine Java-Themen 0
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
J Zerlegen einer Zahl Allgemeine Java-Themen 6
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
MiMa Prüfziffer einer EAN Nummer berechnen Allgemeine Java-Themen 4
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
A Mithilfe von einer Nummer einen Namen finden n-Beziehung Allgemeine Java-Themen 8
Scream_ilias Auf einer Website die anmeldedaten eingeben Allgemeine Java-Themen 9
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
I Lohnt sich heutzutage der Aufwand einer Portierung für MacOS Allgemeine Java-Themen 8
J Suchen von einer Scannereingabe in einem HashSet Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
L Echtzeitdaten aus einer Webseite ziehen mit Java Allgemeine Java-Themen 19
V EMail, Attachments auslesen von einer Email Allgemeine Java-Themen 0
T Google Links in einer Liste Allgemeine Java-Themen 4
T Sinn einer toString Methode Allgemeine Java-Themen 3
P Durchlaufen einer Queue Allgemeine Java-Themen 9
J Größe einer CD ermitteln Allgemeine Java-Themen 10
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
H Länge einer verketteten Liste Allgemeine Java-Themen 4
B Quellcode einer Java libary finden um zu copy & paste'n Allgemeine Java-Themen 5
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
E Erstellen einer Liste mit einer maximalen Menge an Elementen Allgemeine Java-Themen 13
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben