2017-05-20 19 views
4

user, deptaccount의 3 가지 모듈로 샘플 애플리케이션을 생성 중입니다. 내 사용자 모듈, 나는 메인 클래스가 다음과 같은 명령을 내 모듈을 컴파일, 컴파일 후자바 9 : JLink가 잘못된 이미지를 만들었습니다 - 모듈 실행 스크립트가 없습니다

실행에 대해 다음 명령을 실행 성공

java -p target -m com.user/com.user.info.Launcher 

출력 자바 모듈을 실행 한 후 . 그러나 jlink을 사용하여 런타임 이미지를 만들려고하면 이미지는 성공적으로 생성되지만 모듈 실행 스크립트는 생성되지 않습니다. 이미지를 만들 경우, 나는 다음과 같은 명령을 사용하고 있습니다 :

jlink --module-path $JAVA_HOME/jmods:target --add-modules com.user --output my-app 

에서, 런타임 이미지, 내가 bin 디렉토리를 가지고 있지만,이 디렉토리는 javakeynote 스크립트가 포함되어 있습니다. 내 응용 프로그램을 실행하기 위해 사용자 기본 클래스 스크립트도 필요합니다. 아래

내 Java 버전 :

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

어떻게이 문제를 해결할 수 있습니까?

+0

Afaik'jlink'는 실행 파일을 생성하지 않습니다. 필요한 모듈 만있는 VM의 런타임 이미지를 만듭니다. –

+0

그러나 open jdk에 언급 된 인사말 샘플에는 인사말 스크립트 –

+0

을 볼 수있는 장소를 연결할 수 있습니까? 나는 여기에 그것을 보지 않는다 : http://openjdk.java.net/projects/jigsaw/quick-start –

답변

8

jlink은 필요한 모듈 만 포함하는 런타임 VM 이미지를 만듭니다.

--add-modules com.user을 지정 했으므로 이미지에는 com.user 모듈과 모듈이 (직접 또는 간접적으로) 의존하는 모듈이 모두 포함됩니다.

당신은 생성 된 이미지의 bin 폴더에 java 바이너리를 사용하여 명령을 사용하여 응용 프로그램을 실행할 수 있습니다

는 :

java com.user.info.Launcher 

또한 jlink--launcher <command>=<module>/<main>를 사용하여 실행 스크립트를 생성 할 수 있습니다 선택권.

jlink --module-path $JAVA_HOME/jmods:target --add-modules com.user --output my-app --launcher launch=com.user/com.user.info.Launcher 

그리고 그 후

, 당신은 단지 응용 프로그램을 실행하기 위해 bin 디렉토리에서 launch를 사용할 수 있습니다처럼 귀하의 경우에 당신이 뭔가를 할 수 있습니다.

+0

Thanks @Jorn, Java always rocks –

+4

@HarmeetSinghTaara 당신이 묘사 한 것을 발견했습니다. 나는 몇몇 것을 시험해 보았고'--luncher' 옵션이'jlink'로 시작 스크립트를 생성한다는 것을 알았습니다. 나는 대답에 약간의 정보를 추가했다. –