2017-10-14 5 views
4

나는 java 9 jigsaw tutorial을 완료했습니다. 내가 클래스를 실행하는 데 어려움을 겪고있다, 자바는 에러 -부트 레이어의 초기화 중 Java가 실행되지 않는 이유 - 모듈 개조자를 찾을 수 없습니다.

java --module-path mods -m mods/com.test/com.test.HelloWorld 
Error occurred during initialization of boot layer 
java.lang.module.FindException: Module mods not found 

javac의 내가 아무것도 실종

$ java -version 
java version "9" 
Java(TM) SE Runtime Environment (build 9+181) 
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) 

버전 -, 자바 맥을 사용하고

javac -d mods --module-source-path src $(find src -name '*.java') 

을 Command 키 아래에 던져?

답변

5

제거를 추가로 개조했다가

에 클래스 파일의 대상 디렉토리를 설정합니다. 귀하의 경우

클래스가 패키지의 일부인 경우

는 다음 javac의 패키지 이름을 반영하고 필요 같은 디렉토리를 생성하는 하위 디렉토리에 클래스 파일을 두는 mods 폴더.

따라서 명령을 실행 한 후 개조 디렉토리에서 좀 걸릴 수 있습니다, 모두를위한 .class (*.java)는 자신의 패키지 이름으로 해당 디렉토리 구조에 존재하는 것입니다.


그런 java 도구 옵션 --module-path module path 또는 다음 명령에 지정된 -p module path : 세미콜론으로 구분에서 디렉토리에 대한

검색 (;) 디렉토리의 목록입니다. 각 디렉토리는 모듈의 디렉토리입니다.

나열된 디렉토리가 mods인데, 시작하기 링크를 따라 작성해야한다고 가정합니다.


를 해결하기 위해 초기 모듈을 지정 명령에 --module modulename[/mainclass] 또는 -m module[/mainclass] 얹는과 모듈에 의해 지정되지 않은 경우 기본 클래스의 이름은 실행.

귀하의 경우에는 모듈 이름이 com.test이고 주 클래스는 com.test.HelloWorld입니다.


따라서 명령의 전체 정확한 구문은 다음과 같다 -

java --module-path mods -m  com.test/com.test.HelloWorld 
       ^   ^  ^
      module directory module name main class 
3

-m 플래그는 실행할 모듈 이름과 기본 클래스를 허용합니다.

java --module-path mods -m com.test/com.test.HelloWorld 

--module-path mods 알려줍니다 javacom.test를 찾기위한 검색 : 모듈 이름은 따라서해야 클래스를 실행할 명령 com.test입니다.

java --module-path mods -m com.test/com.test.HelloWorld 
3

당신이 먼저 -d directory를 사용하여 보장 무엇

javac -d mods --module-source-path src $(find src -name '*.java') 

된 직후 javac 명령을 사용하여 코드를 컴파일 이름 - 모듈에서