2013-05-19 458 views
8

我知道這裏有很多「無法訪問jarfile」的問題,但我確實覺得這有點不同以保證它自己的線程。無法訪問cygwin下的jarfile

我正在寫一篇演練,本演練的一部分涉及到安裝Cygwin並運行一個.jar文件。

問題是,這個.jar文件需要從多個目錄中調用,而不是讓我的讀者在每次需要運行時都必須輸入.jar的完整路徑,我只希望他們必須在對Cygwin進行簡單配置後輸入.jar文件命令。

我已經嘗試將PATH添加到〜/ .bashrc,並嘗試添加CLASSPATH,但沒有成功。

我每次調用java -jar file.jar我得到Error: Unable to access jarfile file.jar

我應該怎麼做才能解決這個問題?

[編輯]

我曾與我的兄弟媳婦,誰知道一些關於Linux和他已經建議我創建一個包裝來執行罐子,我有一個快速搜索,但找不到任何簡單的東西。

有什麼建議嗎?

回答

7

的Cygwin已經提供了一種在UNIX(POSIX)式路徑和Windows(MS-DOS)式路徑之間轉換的方法,它被稱爲「cygpath」。

嘗試:

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

注:這些都是圍繞着cygpath調用反引號。

使用cygpath無需編寫自己的bash腳本來傳遞信息,並且jar文件可以位於計算機上的任何位置。

8

java -jar file.jar僅在file.jar位於當前工作目錄中時有效。如果不是,則需要提供file.jar的路徑。請注意,如果您使用Oracle Java,則需要注意它是本機Windows程序,並且不理解Cygwin的* NIX路徑。

至於你的姐夫的建議,他是正確的,Java程序通常通過* NIX平臺上的包裝腳本啓動。如果您使用的是Oracle Java,那看起來像:

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

乾杯 - 我只是設法找到一個類似的解決方案。當你回答時,請看下面我寫的「我的回答」;) – Escribblings

2

好的,現在已經解決了。

我設法創建了一個調用.jar和它的參數的bash腳本,並且感謝Bernie Zimmerman's Blog我設法讓它運行。

問題似乎是,雖然Cygwin是使用Posix文件名的Linux環境,但Java仍然需要Windows文件名。

有問題的.jar有2個可能的命令,並在文件上執行這些命令並創建另一個文件。

所以我現在可以替換

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

jar.sh command file.1 file.2

我創建的bash腳本是:

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

相關問題