我正在嘗試import org.apache.commons.fileupload.*
但我被告知它不存在。Java Imports Error
我下載這個JAR:http://commons.apache.org/fileupload/
,並把它放在classpath。那麼我在這裏做錯了什麼?
我正在嘗試import org.apache.commons.fileupload.*
但我被告知它不存在。Java Imports Error
我下載這個JAR:http://commons.apache.org/fileupload/
,並把它放在classpath。那麼我在這裏做錯了什麼?
最可能你正在考慮%CLASSPATH%
環境變量。你不應該那樣做。 JAR文件必須位於動態Web應用程序項目的/WEB-INF/lib
文件夾中。該文件夾默認由webapp的類路徑覆蓋。只要你在該文件夾中放入JAR文件,一個體面的IDE(Eclipse,Netbeans等)就會自動將它添加到構建路徑。
當您在命令控制檯中使用普通香草javac.exe
進行編譯時,您必須在-cp
參數中指定它。
更新: 假設你正在使用Windows和坐在源根文件夾,這裏是如何javac.exe
樣子:
javac -cp .;/path/to/tomcat/lib/*;/path/to/WEB-INF/lib/* com/example/Servlet.java
注:通配符僅適用於JDK 1.6或更新。否則,你必須單獨指定所有庫。
當我包含servlet-api.jar時,我通過'set classpath'來包含它,那麼這將如何改變呢? – 2010-09-29 21:12:51
我現在在評論中看到您在命令控制檯中執行此操作 - 我真的沒有想到,因爲這非常麻煩。在這種情況下,您需要將完整路徑添加到commons-fileupload。jar'添加到'-cp'參數中,由(半)冒號分隔(取決於OS)。不要忘記在包含空格的地方圍繞單個路徑加引號。你當然可以使用'%CLASSPATH%'環境變量,但這被認爲是不好的做法。最好寫一個'.bat'或'.cmd'文件,該文件在命令中有正確的'-cp'參數。 – BalusC 2010-09-29 21:16:29
好吧,我現在正在工作(我知道命令行很麻煩,但我喜歡我喜歡的東西,畢竟沒有人說6502 asm是流水線的)。我需要做更多的修補工作來弄清楚發生了什麼問題,但使用javac -cp進行工作就很好。 – 2010-09-29 21:22:59
你看到你的課堂在罐子裏嗎?要了解在一個罐子裏存在類,請執行以下操作:
# linux
jar tvf jarname.jar | grep classname
# win
jar tvf jarname.jar | findstr classname
要了解在任何數量的罐的存在你的類,你可以這樣做:
# linux
for f in `find . -name *.jar`; do echo $f; jar tvf $f | grep classname; done | less
由於你正在編寫一個servlet,你可能已經創建了一個web項目。將您的fileupload jar放在WEB-INF/lib
文件夾中,然後讓IDE中的項目在您的項目構建路徑中自動放置。
編輯看到你使用命令行,請務必提供完整的jar文件路徑CLASSPATH
(包括JAR名及其擴展,以分號分隔)。
我沒有使用IDE ,我通過命令行來做事情。 – 2010-09-29 21:16:34
您正在編寫一個Web應用程序嗎? – 2010-09-29 20:56:16
你怎麼把它放在類路徑中? – OscarRyz 2010-09-29 20:56:41
你如何構建你的應用程序?使用螞蟻,maven,eclipse? – CoolBeans 2010-09-29 21:01:28