관련 이론 및 문법

(javac 참고)

http://kkikkodev.tistory.com/177


(Classpath 참고)

http://kkikkodev.tistory.com/187


문제 의도

MainClass 파일이 /apps/com/company/application 디렉토리안에 존재합니다. CLASSPATH 환경 변수가 "." (현재 디렉토리) 로 설정되어 있다고 가정합니다. MainClass 를 정상적으로 실행할 수 있는 명령어를 2 개 고르는 문제입니다.


답안

B, C


풀이 방법

주어진 소스코드를 살펴보면, MainClass 클래스가 있고, 이는 com.company.application 패키지로 선언되어 있습니다.


보기 A 에서는 /apps 디렉토리로부터 java MainClass 명령어를 실행한다고 했는데, 이는 잘못된 말입니다. 현재 환경변수에는 "." 가 설정되어 있으므로, /apps 가 설정되어 있습니다. 이 환경변수 디렉토리부터 com.company.application 패키지 안의 MainClass 를 실행시키려면 java com.company.application.MainClass 의 형태로 명령어를 실행해야 합니다. 그리고 기본적으로 패키지명을 생략할 수 없기 때문에 따라서 답안 후보에서 제외합니다.


보기 B 에서는 /apps 디렉토리로부터 java com.company.application.MainClass 명령어를 실행한다고 했는데, 이는 맞는 말입니다. 현재 환경변수에는 "." 가 설정되어 있으므로, /apps 가 설정되어 있습니다. 이 환경변수 디렉토리부터 com.company.application 패키지 안의 MainClass 를 실행시키려면 java com.company.application.MainClass 의 형태로 명령어를 실행해야 하므로 답안 후보가 됩니다.


보기 C 에서는 어느 디렉토리에서든 간에 java -classpath /apps com.company.application.MainClass 명령어를 실행한다고 했는데, 이는 맞는 말입니다. 현재 환경변수에는 "." 가 설정되어 있으므로, 임의의 현재 디렉토리가 설정될 것입니다. 하지만 java -classpath 명령어를 통해서 /apps 디렉토리를 classpath 로 설정하면서 동시에 com.company.application 패키지 안의 MainClass 를 실행하므로 보기 B 와 마찬가지로 실행이 됩니다. 따라서 답안 후보가 됩니다.


보기 D 에서는 /apps/com/company/application 디렉토리로부터 java -classpath . MainClass 명령어를 실행한다고 했는데 이는 맞지 않는 말입니다. java -classpath . 명령어를 통해서 /apps/com/company/application 디렉토리를 classpath 환경변수로 설정합니다. MainClass 는 이미 com.company.application 이라는 패키지로 선언되었으므로 실행시에 com.company.application 패키지명을 써주어야 하는데, 이것이 생략되어서 잘못되었습니다. 만약 생략하지 않는다 하더라도, 현재 classpath 최종 하위 디렉토리부터 com.company.application 패키지를 또 찾기 때문에 찾을 수 없어서 잘못되어 이는 답안 후보에서 제외합니다.


보기 E 에서는 /apps 디렉토리로부터 java -classpath /apps/com/company/application:. MainClass 명령어를 실행한다고 했는데, 이는 맞지 않는 말입니다. -classpath 옵션을 통해서 /apps/com/company/application 폴더와 현재 디렉토리인 ......./application 을 classpath 환경변수로 설정하는데, MainClass 앞에 패키지명이 생략되었으므로 기본적으로 오류가 납니다. 따라서 답안 후보에서 제외합니다.


보기 F 에서는 /apps/com/company/application 디렉토리로부터 java com.company.application.MainClass 명령어를 실행한다고 했는데 이는 맞지 않는 말입니다. 현재 환경변수에는 "." 가 설정되어 있으므로, ...../application 디렉토리가 설정되어 있을 것입니다. 이 디렉토리로부터 com.company.application.MainClass 를 찾으려고 하니 오류가 납니다. 따라서 답안 후보에서 제외합니다.


결과적으로 답안은 B 와 C 가 됩니다.


by kkikkodev 2016. 11. 14. 19:59