2013-05-19 19 views
8

Wiem, że jest tu wiele pytań "nie można uzyskać dostępu do pliku jarfile", ale uważam, że jest to na tyle odmienne, aby zagwarantować własny wątek.Nie można uzyskać dostępu do pliku jarfil pod cygwin

Piszę instrukcję, część tego poradnika polega na instalacji Cygwin i uruchomieniu pliku .jar.

Problem polega na tym, że ten plik .jar musi być wywoływany z wielu katalogów, a zamiast tego, aby moi czytelnicy musieli wprowadzić pełną ścieżkę do pliku .jar za każdym razem, gdy muszą go uruchomić, chciałbym, aby trzeba wprowadzić polecenie pliku .jar po dokonaniu prostej konfiguracji do Cygwin.

Próbowałem dodać PATH do ~/.bashrc i próbowałem również dodać CLASSPATH, ale nie udało się.

każdym razem modlę java -jar file.jar uzyskać Error: Unable to access jarfile file.jar

Co należy zrobić, aby rozwiązać ten problem?

[Edytuj]

Rozmawiałem z moim bro-in-law, kto wie coś o Linuksie, a on zasugerował, że mogę stworzyć opakowanie wykonać słoik, miałem szybkie wyszukiwanie, ale nie mogę znaleźć niczego prostego.

Wszelkie sugestie?

Odpowiedz

7

Cygwin zapewnia już sposób konwertowania ścieżek w stylu UNIX (POSIX) i ścieżek w stylu systemu Windows (MS-DOS), nazywa się "cygpath".

Spróbuj:

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

Uwaga: To są backticks otaczające inwokację cygpath.

Korzystanie z cygpath eliminuje potrzebę pisania własnego skryptu bash, aby przekazywać rzeczy, a plik jar można umieścić w dowolnym miejscu na komputerze.

8

Plik java -jar plik.jar działa tylko wtedy, gdy plik.jar znajduje się w bieżącym katalogu roboczym. Jeśli nie, musisz podać ścieżkę do pliku file.jar. Zauważ, że jeśli używasz Oracle Java, musisz mieć świadomość, że jest to macierzysty program Windows i nie rozumie ścieżek Cygwin * NIX.

Jeśli chodzi o porady twojego szwagra, ma rację, że programy Java są zwykle uruchamiane za pośrednictwem skryptów opakowujących na platformach * NIX. Jeśli używasz Oracle Java, wyglądałoby to następująco:

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

Pozdrawiam - Sam udało mi się znaleźć podobne rozwiązanie. Zobacz "moja odpowiedź", poniżej której pisałem, kiedy odpowiedziałeś;) – Escribblings

2

OK, to zostało już rozwiązane.

Udało mi się utworzyć skrypt basha, który wywołuje argumenty .jar i jego argumenty, a dzięki Bernie Zimmerman's Blog udało mi się uruchomić go.

Problem wydaje się, że podczas gdy Cygwin jest środowiskiem Linuksa używającym nazw plików Posix, Java nadal potrzebuje nazw plików Windows.

.Jar ma 2 możliwe polecenia i wprowadza te polecenia do pliku i tworzy inny plik.

Więc mogę teraz wymienić

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

z

jar.sh command file.1 file.2

skrypt bash stworzyłem to:

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

Powiązane problemy