Ich weiß, dass es hier viele Fragen gibt, "die nicht auf JAR-Dateien zugreifen können", aber ich denke, das ist anders genug, um einen eigenen Thread zu rechtfertigen.
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 meine Leser nicht jedes Mal den vollständigen Pfad zur .jar-Datei eingeben müssen, wenn sie benötigt werden Geben Sie den .jar-Dateibefehl ein, nachdem Sie eine einfache Konfiguration für Cygwin vorgenommen haben.
Ich habe versucht, den PATH zu ~ / .bashrc hinzuzufügen und habe auch versucht, CLASSPATH hinzuzufügen, hatte aber keinen Erfolg.
Jedes Mal, wenn ich java -jar file.jar
aufruft, erhalte ich Error: Unable to access jarfile file.jar
Was soll ich tun, um dies zu beheben?
[Bearbeiten]
Ich habe mit meinem Schwager gesprochen, der ein wenig über Linux weiß, und er hat vorgeschlagen, dass ich einen Wrapper zum Ausführen des Jar erstellen soll, ich hatte eine schnelle Suche, kann aber nichts Einfaches finden.
Irgendwelche Vorschläge?
Cygwin bietet bereits eine Möglichkeit, zwischen UNIX (POSIX) -artigen Pfaden und Windows (MS-DOS) -artigen Pfaden zu konvertieren, es heißt "cygpath ".
Versuchen:
%Vor%Hinweis: Das sind Backticks, die den Cygpath-Aufruf umgeben.
Wenn Sie cypath verwenden, brauchen Sie kein eigenes bash-Skript mehr zu schreiben, um die Dinge zu übergeben. Die jar-Datei kann sich irgendwo auf Ihrem Computer befinden.
Um beispielsweise ein Bash-Skript zu erstellen, das JavaScript-Code mithilfe des Closure-Compilers von Google in einer bash-agnostischen Weise minimiert:
%Vor%Dieses Skript sollte unter Cygwin und Linux korrekt ausgeführt werden.
java -jar file.jar funktioniert nur, wenn sich file.jar in Ihrem aktuellen Arbeitsverzeichnis befindet. Wenn nicht, müssen Sie den Pfad zu file.jar angeben. Wenn Sie Oracle Java verwenden, müssen Sie beachten, dass es sich um ein natives Windows-Programm handelt und Cygwins * NIX-Pfade nicht verstanden werden.
Was den Ratschlag Ihres Schwagers angeht, ist er richtig, dass Java-Programme normalerweise über Wrapper-Skripte auf * NIX-Plattformen gestartet werden. Wenn Sie Oracle Java verwenden, sieht das so aus:
%Vor%OK, das wurde jetzt behoben.
Ich habe es geschafft, ein Bash-Skript zu erstellen, das das .jar und seine Argumente aufruft, und dank Bernie Zimmermans Blog Ich habe es geschafft, es zum Laufen zu bringen.
Das Problem scheint zu sein, dass, während Cygwin eine Linux-Umgebung ist, die Posix-Dateinamen verwendet, Java immer noch Windows-Dateinamen benötigt.
Die fragliche .jar-Datei enthält zwei mögliche Befehle und führt diese Befehle in einer Datei aus und erstellt eine andere Datei.
So kann ich jetzt
ersetzen java -jar ./foo/bar/file.jar command file.1 file.2
mit
jar.sh command file.1 file.2
Das von mir erstellte Bash-Skript ist:
#!/bin/bash
java -jar "C:\foo\bar\file.jar" "" "" ""