2014-03-02 31 views
-1

我試圖在編譯應用程序時向我的java類路徑添加一個.jar文件,並且在我指定位置時似乎不工作:javac -cp似乎沒有工作

javac CreateAccount.java -cp .:~/glassfish4/glassfish/modules/javax.servlet-api.jar -d classes

輸出:

CreateAccount.java:3: error: package javax.servlet.annotation does not exist import javax.servlet.annotation.WebServlet; 
CreateAccount.java:5: error: package javax.servlet does not exist import javax.servlet.*; 
CreateAccount.java:6: error: package javax.servlet.http does not exist import javax.servlet.http.*; 

到位度tidle(〜)的使用/家也試過,但也不管用。然而,當我有問題複製.jar文件到CreateAccount.java位於同一文件夾中,並有此相反:

javac CreateAccount.java -cp .:javax.servlet-api.jar -d classes

這似乎很好地工作。我檢查過的路徑絕對正確,並且存在jar文件。

任何想法?

謝謝。

+1

你使用的是Windows或某種形式的UNIX(編譯時)?我的猜測是你使用的是Unix,然後是'〜',但是值得檢查...... –

+2

以科學的方式定義「它似乎不工作」:你觀察到什麼?什麼是你得到的錯誤信息? –

+0

它似乎沒有識別類路徑,錯誤表明它無法找到屬於.jar文件的類。 – user1915747

回答

0

如果CreateAccount只依賴於javax.servlet-api.jar,並且如果您的此JAR路徑正確,則將該引用刪除到當前工作目錄;即:

javac -cp ~/glassfish4/glassfish/modules/javax.servlet-api.jar -d classes CreateAccount.java

(注:源文件應該放在後javac選項)

爲了驗證到javax.servlet-api.jar路徑,試試這個:

jar tf ~/glassfish4/glassfish/modules/javax.servlet-api.jar 

你應該看到一個列出所有在javax.servlet-api.jar中的課程;如果你沒有這個路徑是不正確的。 (您也可以使用ls測試過程中的路徑)

的波浪~是短期的當前用戶的主目錄,所以假設這是Linux和你user1915747,上面是等價於:

javac -cp /home/user1915747/glassfish4/glassfish/modules/javax.servlet-api.jar -d classes CreateAccount.java

通過添加.:任期到類路徑,您要添加的當前工作目錄(.)和隔板(:)。如果這會導致編譯中斷,那麼編譯器會在當前工作目錄中找到匹配項,而不是在javax.servlet-api.jar中。如上所述,如果您的源文件不需要當前工作目錄中的任何內容,請刪除該術語,或將該術語放在最後;機智

javac -cp /home/user1915747/glassfish4/glassfish/modules/javax.servlet-api.jar:. -d classes CreateAccount.java

+0

我不認爲問題是與jar文件,如果我指定: javac CreateAccount.java -cp〜/ glassfish4/glassfish/modules/javax.servlet-api.jar :. -d類 它工作正常,但如果我把它放在前面,它不會,如果我把上面的命令行(工作)放到options.txt文件中並運行javac @ options.txt它不會工作。 – user1915747

+0

您可能知道,'.'表示當前位置,那麼您的當前目錄中是否還有另一個JAR? –

+0

不,我刪除舊的.jar。我不知道這兩者之間有什麼不同。它在文檔中聲明這指定了多個類路徑,不知道爲什麼在另一個之前指定一個會很重要。當我將它們輸入到命令行提示符時爲什麼這些選項能夠正常工作,但我爲什麼將它們保存到選項文件並使用javac @options不起作用,我也感到困惑。 – user1915747