2011-04-26 4 views
3

NetBeans 외부에서 서블릿을 컴파일하려고합니다. 이 컴파일러 오류를 생성 한 간단한 Hello World 서블릿을 만들었습니다.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/과 같은 오류가 발생합니다.

서블릿을 수동으로 컴파일하는 올바른 방법은 무엇입니까?

답변

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

2

더하기 고려해보십시오. 여기에는 여러 가지 다양한 응용 프로그램 프레임 워크가있는 웹 응용 프로그램을 생성하기위한 상용구를 제공하는 아키 타입이 있습니다. 여기에서하려고하는 것을 자동화하는 간단한 웹 응용 프로그램 아키 타입이 있습니다.

수동으로 컴파일 자바은 일반적으로 좋은 계획이 아닙니다. 빌드 툴은 프로젝트의 처리 및 라이프 사이클을 자동화합니다. 그들은 성숙하고 유용합니다.

+3

진행 상황을 완전히 이해하려면 Java를 수동으로 컴파일하는 것이 좋습니다. 그렇지 않으면 동의합니다. – Burkhard

+0

물론, 나는 그것에 완전히 동의 할 수 있습니다 -하지만 목표로, 그것은 거의 원 - 숏 거래이며 컴파일 클래스 패스 (및 런타임 클래스 패스)를 이해하는 것은 서블릿 지향적 인 것이 아닙니다. 클래스 패스를 이해하려고한다면 서블릿을 다루기 전에 Java SE와 간단한 외부 라이브러리를 사용해야한다. –

+0

@Burkhard 무슨 일이 벌어지고 있는지 완전히 이해하고 싶다면 인생에서 한번 * java *를 수동으로 컴파일하는 것이 좋습니다. 하지만 그때부터 적절한 도구 세트를 사용해야합니다 :-) –