2014-10-03 72 views
0

我正在寫一個bash腳本,它可以讓我從不同的目錄運行java文件,但我不確定爲什麼我的已編譯的java文件不會運行。相關代碼:爲什麼不是我的java文件正在運行(bash)

#!/bin/bash 

if [ "$1" == "JavaAdd" -o "$1" == "JavaAddBad" ] 
then 
    echo "Testing $1" 
    `java ../Source/Java/"$1"` 

else 
    echo "Invalid File" 
fi 

此腳本位於Script目錄下。所以這兩個子目錄Script和Source都在同一個目錄中。我編譯的java文件位於/ Source/Java

+2

你應該'man java'。 – 2014-10-03 03:10:00

回答

3

java的參數不是路徑或文件名。

這是一個類名

您可以通過指定類路徑來告訴Java在哪裏可以找到它。

java -cp ../somewhere/classes:../../somewhereElse/x.jar com.me.MyClass 

然後將在類路徑中的所有位置查找該類。每個位置可以是目錄或jar文件。

另請注意,您提供給類路徑的目錄需要放在類包層次結構的根目錄中。因此,如果您的課程名爲com.me.MyClass並且它位於../somewhere/classes/com/me/MyClass.class的文件中,則需要包含../somewhere/classes(不是其任何子目錄)。

另請注意,包含類路徑不會更改程序的工作目錄。它將在打開基於您啓動它的目錄(與類文件的位置完全無關)時仍然解析相對路徑。

+0

我知道如果我做 java JavaAdd 程序會運行,當我在與java文件相同的目錄下。那麼爲什麼我不能在不同的目錄中運行它? – guevarak12 2014-10-03 03:20:17

+0

如果你不告訴它它在哪裏,它將如何找到你的課程?默認情況下,它僅在當前目錄中查找。 – Thilo 2014-10-03 03:23:38

+0

我如何知道我的班級路徑在哪裏? – guevarak12 2014-10-03 03:28:50

相關問題