2011-04-26 50 views
3

編譯的servlet我想編譯NetBeans外部的servlet。我做了一個簡單的Hello World servlet,它產生了這些編譯錯誤。用javac

import javax.servlet.ServletException;               
        ^                   
ServletTester.java:4: package javax.servlet.http does not exist         
import javax.servlet.http.*;                  
^                         
ServletTester.java:6: cannot find symbol               
symbol: class HttpServlet                   
public class ServletTester extends HttpServlet {             
           ^               
ServletTester.java:7: cannot find symbol               
symbol : class HttpServletRequest                
location: class ServletTester                  
     protected void processRequest(HttpServletRequest request, HttpServletResponse response) t 
            ^
ServletTester.java:7: cannot find symbol 
symbol : class HttpServletResponse 
location: class ServletTester 
     protected void processRequest(HttpServletRequest request, HttpServletResponse response) t 
                   ^
ServletTester.java:7: cannot find symbol 
symbol : class ServletException 
location: class ServletTester 
     protected void processRequest(HttpServletRequest request, HttpServletResponse response) t 

6 errors 

顯然,javax.servlet包不能被定位。我從GlassFish的安裝javax.servlet.jar,但如果我不javac ServletTester.java -classpath /opt/glassfish3/glassfish/modules/我仍然得到同樣的錯誤。

什麼是手工編譯的Servlet的正確方法?

回答

6

試試這個:

$ javac -classpath .:/opt/glassfish3/glassfish/modules/javax.servlet.jar ServletTester.java 

請注意類路徑該JAR文件名必須完全指定。只是他們的包含目錄是不夠的。使用通配符也是允許的(由一個評論指定)。

+3

你應該能夠使用通配符:[作爲一個特別的方便,包含*的基本名稱的類路徑元素被認爲等效於指定擴展名爲.jar或.JAR的目錄中的所有文件的列表。] (http://download.oracle.com/javase/6/docs/technotes/tools/solaris/javac.html#options) – McDowell 2011-04-26 14:04:53

2

另外,考慮行家。它有原型,可以爲您生成具有許多不同應用程序框架的Web應用程序的工作樣板;有一個簡單的Web應用程序原型,可以自動執行您在此嘗試執行的操作。

手動編譯的Java通常不是一個很好的計劃;存在構建工具來自動化項目的處理和生命週期。他們成熟和有用。

+3

這是一個好主意,手動編譯Java,如果你想充分了解正在發生的事情。否則,我同意你的看法。 – Burkhard 2011-04-26 14:03:19

+0

當然,我完全同意這一點 - 但作爲一個目標,這幾乎是一筆交易,理解編譯類路徑(和運行時類路徑)不是面向servlet的東西。我想說,如果你想了解類路徑,你應該在使用servlet之前使用Java SE和一個簡單的外部庫。 – 2011-04-26 14:05:02

+0

@Burkhard如果你想完全理解正在發生的事情,那麼在你的生活中手動編譯java *是一個好主意。但從那時起,您應該使用適當的工具集:-) – 2011-04-26 14:07:10