2013-05-19 14 views
8

Ich weiß, es gibt viele Fragen "nicht auf Jarfile zugreifen" hier, aber ich denke, das ist anders genug, um seinen eigenen Thread zu rechtfertigen.Zugriff auf JAR-Datei unter Cygwin

Ich schreibe eine exemplarische Vorgehensweise, ein Teil dieser exemplarischen Vorgehensweise beinhaltet die Installation von Cygwin und die Ausführung einer .jar-Datei.

Das Problem ist, dass diese .jar-Datei aus mehreren Verzeichnissen aufgerufen werden muss, und anstatt meine Leser müssen den vollständigen Pfad zum .jar jedes Mal eingeben, wenn sie es ausführen müssen, möchte ich sie nur zu müssen den .jar-Dateibefehl eingeben, nachdem Cygwin eine einfache Konfiguration vorgenommen hat.

Ich habe versucht, den Pfad zu ~/.bashrc hinzufügen und habe auch versucht, die CLASSPATH, aber hatten keinen Erfolg.

Jedes Mal, wenn ich java -jar file.jar rufe ich bekommen Error: Unable to access jarfile file.jar

Was soll ich dieses Problem zu beheben tun?

[Bearbeiten]

Ich habe meine in-law bro gesprochen, die ein wenig über Linux kennt, und er hat vorgeschlagen, dass ich einen Wrapper erstellen Sie das Glas auszuführen, ich habe eine schnelle Suche hatte, aber kann nichts einfaches finden.

Irgendwelche Vorschläge?

Antwort

7

Cygwin bietet bereits eine Möglichkeit, zwischen UNIX (POSIX) -Style-Pfaden und Windows (MS-DOS) -Style-Pfaden zu konvertieren, es heißt "cygpath".

Versuchen:

java -jar `cygpath -w ./foo/bar/file.jar command file.1 file.2` 

Hinweis: Das sind die Backticks cygpath Aufruf umgibt.

Durch die Verwendung von Cygpath entfällt die Notwendigkeit, ein eigenes Bash-Skript zu schreiben, um Dinge zu übergeben, und die JAR-Datei kann sich an beliebiger Stelle auf Ihrem Computer befinden.

8

java -jar datei.jar funktioniert nur, wenn sich file.jar in Ihrem aktuellen Arbeitsverzeichnis befindet. Wenn nicht, müssen Sie den Pfad zu file.jar angeben. Beachten Sie, dass Sie bei der Verwendung von Oracle Java beachten müssen, dass es sich um ein natives Windows-Programm handelt, das die * NIX-Pfade von Cygwin nicht versteht.

Wie für den Rat Ihres Schwagers ist er richtig, dass Java-Programme normalerweise über Wrapper-Skripte auf * NIX-Plattformen gestartet werden. Wenn Sie Oracle Java verwenden, würde das wie folgt aussehen:

#! /bin/sh 
exec java -jar $(cygpath -w /path/to/file.jar) "[email protected]" 
+0

Prost - Ich habe gerade eine ähnliche Lösung gefunden. Siehe "meine Antwort", unter der ich schrieb, als du geantwortet hast;) – Escribblings

2

OK, das wurde jetzt behoben.

Ich habe es geschafft, ein Bash-Skript zu erstellen, das das .jar und seine Argumente aufruft, und dank Bernie Zimmerman's Blog habe ich es geschafft zu laufen.

Das Problem scheint zu sein, dass, während Cygwin eine Linux-Umgebung mit Posix-Dateinamen ist, Java immer noch Windows-Dateinamen will.

Das fragliche .jar hat 2 mögliche Befehle und legt diese Befehle für eine Datei fest und erstellt eine andere Datei.

So kann ich ersetzen jetzt

java -jar ./foo/bar/file.jar command file.1 file.2

mit

jar.sh command file.1 file.2

die Bash-Skript, das ich geschaffen ist:

#!/bin/bash
java -jar "C:\foo\bar\file.jar" "$1" "$2" "$3"

Verwandte Themen