爲什麼不按照以下命令工作?Java類編譯器在類路徑上沒有看到軟件包
$ javac -encoding UTF8 -classpath ./piccolo-1.2.jar:./piccolox-1.2.jar com/google/scrollview/ui/SVAbstractMenuItem.java
它產生多個錯誤,如
com\google\scrollview\ui\SVAbstractMenuItem.java:22: package com.google.scrollview.events does not exist
import com.google.scrollview.events.SVEventType;
^
這是文件SVAbstractMenuItem.java 22行真正的代碼,但警告說法是錯誤的,因爲包存在:
$ ls com/google/scrollview/events/
Makefile Makefile.am Makefile.in SVEvent.java SVEventHandler.java SVEventType.java
如何教這個編譯器看看包嗎?
UPDATE
代碼是不是我的,這是正方體makefile文件,我想在cygwin下運行它。一切看起來正確。
包含當前目錄給出相同的結果:
$ javac -encoding UTF8 -classpath ./piccolo-1.2.jar:./piccolox-1.2.jar:. com/google/scrollview/ui/SVAbstractMenuItem.java
com\google\scrollview\ui\SVAbstractMenuItem.java:22: package com.google.scrollview.events does not exist
import com.google.scrollview.events.SVEventType;
^
com\google\scrollview\ui\SVAbstractMenuItem.java:56: cannot find symbol
symbol : class SVWindow
location: class com.google.scrollview.ui.SVAbstractMenuItem
public void performAction(SVWindow window, SVEventType eventType) {}
^
com\google\scrollview\ui\SVAbstractMenuItem.java:56: cannot find symbol
symbol : class SVEventType
location: class com.google.scrollview.ui.SVAbstractMenuItem
public void performAction(SVWindow window, SVEventType eventType) {}
^
3 errors
UPDATE 2
我發現這個發生如果存在於類路徑參數JAR。
更新3
我意識到,如果一個冒號將會分離路徑,那麼Windows/DOS盤符無法處理。因此,用冒號分隔是錯誤的。
解決
這是Cygwin的/ Java的不兼容。 Windows'Java使用分號分隔路徑,而linux和makefile則使用linux-style,即冒號。所以它不在cygwin下工作。即使在makefile中將冒號替換爲分號也不能解決問題。
只提取所有JAR內容到單個純文本目錄中。
你能顯示你的包結構和你的'pwd'嗎? –
嗯,'make' for Java?它不構建?也許爲Java編寫的構建更可能工作。 –
'pwd'不相關,但我可以說它很長;可能會發生一些截斷? –