2014-03-02 1 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 (~) 대신에/홈을 사용하여 시도하지만 중 하나가 작동하지 않습니다. 그러나 나는 CreateAccount.java가있는 같은 폴더에 문제의 .jar 파일을 복사 할 때이 대신이 : 잘 작동하는 것 같다

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

. 나는 경로가 확실히 정확하고 jar 파일이 있는지 확인했습니다.

아이디어가 있으십니까?

감사합니다.

+1

당신이 Windows 또는 (컴파일) 어떤 형태의 유닉스 사용하고 재치가? 내 생각 엔 당신이''''''''''주어진''~''유닉스를 사용하고있는 것이지만, 확인해 볼 가치가 있습니다 ... –

+2

과학적으로 "작동하지 않는 것 같습니다"라고 정의하십시오 : 당신은 무엇을 관찰합니까? 어떤 오류 메시지가 나타 납니까? –

+0

클래스 경로를 인식하지 못하는 것 같습니다. 오류는 .jar 파일의 일부인 클래스를 찾을 수 없음을 나타냅니다. – user1915747

답변

0

CreateAccountjavax.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을 사용할 수 있습니다)

물결표 ~는 현재 사용자의 홈 디렉토리에 대한 짧은, 그래서 이것은 리눅스이며 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 class 위의 명령 줄을 working.txt 파일에 넣고 javac @ options.txt를 실행하면 잘 작동하지만 앞에. 어느 쪽이든 일하십시오. – user1915747

+0

아시겠지만'.'은 현재 위치를 의미하므로 현재 디렉토리에 다른 JAR 파일이 있습니까? –

+0

아니요. 이전 .jar 파일을 제거했습니다. 나는 그 차이가 무엇인지 모르겠다. 문서에 여러 클래스 경로가 지정되어 있고 다른 클래스 패스를 지정하는 것이 왜 중요한지 알 수 없다고 명시되어 있습니다. 명령 줄 프롬프트에 옵션을 입력 할 때 옵션이 작동하는 이유에 대해서도 당황 스럽지만 옵션 파일에 저장하고 javac @options를 사용하는 이유는 작동하지 않습니다. – user1915747

관련 문제