2016-09-24 73 views
0
build> jar cvfe test\MyJavaLibrary.jar Main -C test\java Main.class foo\SomeClass.class 
foo\SomeClass.class : no such file or directory 
added manifest 
adding: Main.class(in = 444) (out= 308)(deflated 30%) 

相應的目錄結構創建jar命令沒有找到文件

build/ 
    test/ 
    java/ 
     foo/ 
     SomeClass.class 
     Main.class 

這是非常奇怪的是,它使用test\java\foo\SomeClass.class時,作爲最後一個參數,而不是正常工作。很好,但是當我對第一個參數做同樣的操作時,這不起作用,那就是test\java\Main.class。行爲似乎非常不一致。

爲什麼找不到foo\SomeClass.class或更好,創建Jar的正確方法是什麼?

Java版本「1.8.0_102」

回答

1

,你在命令行運行的可執行文件會出現在目錄build開始,因此,它不知道在哪裏foo\SomeClass.class文件是相對於build - 這也可以解釋爲什麼test\java\foo\SomeClass.class工作(它知道如何找到相對於執行目錄的文件)。

如果你要對內部build頂級的foo文件夾,我相信它會正常工作,但由於foo嵌套目錄的兩層內,可執行不知道到哪裏尋找與該文件夾名稱在當前目錄中。

+0

但這就是'-C測試\ java'標誌的用途,不是嗎?否則,它會如何找到'Main.class'? –

+0

也許只有第一個路徑受到「-C test \ java」選項的影響? –

+1

你是對的,該參數隻影響下面的輸入文件。看到我添加的答案。 –