2017-09-25 34 views
8

Tôi làm theo Jigsaw quickstart here. Tôi chạy thành công lệnh jlink đưa ra:Làm cách nào để chạy hình ảnh được tạo bởi liên kết JDK 9?

jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp 

Đó tạo ra một "hình ảnh thời gian chạy" mà là một cấu trúc thư mục đã phát nổ giống như:

~ tree -d greetingsapp 
greetingsapp 
├── bin 
├── conf 
│   └── security 
│    └── policy 
│     ├── limited 
│     └── unlimited 
├── include 
│   └── darwin 
├── legal 
│   └── java.base 
└── lib 
    ├── jli 
    ├── security 
    └── server 

Làm thế nào để chạy này? Tôi đã mong đợi một tập tin nhị phân thực thi, không phải là một cây thư mục đã phát nổ.

Thư mục binjavakeytool. Tôi không thấy bất kỳ tệp .jar hoặc tệp .class nào để chạy qua gói thực thi java đi kèm.

+2

Tôi đã trả lời câu hỏi này một lúc trước: https://stackoverflow.com/questions/44085367 –

Trả lời

4

Để chạy, làm điều này:

greetingsapp/bin/java -m com.greetings/com.greetings.Main 

Hoặc, bạn có thể có jlink xây dựng một kịch bản launcher mà thực hiện điều này

jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp --launcher launch=com.greetings/com.greetings.Main 

và sau đó chạy với:

greetingsapp/bin/launcher 

Tạo cùng một tài liệu: -

$ java -p mods -m com.greetings/com.greetings.Main 

có thể được thực thi để chạy lớp Main từ cấu trúc mô-đun mà không cần liên kết sử dụng jshell.


Ngoài ra, jlink là công cụ liên kết và có thể được sử dụng để liên kết một tập hợp các mô-đun, cùng với sự phụ thuộc bắc cầu của họ, để tạo ra một hình ảnh thời gian chạy tùy chỉnh mô-đun được gọi là Modular Runtime Images mà có thể được thực hiện bằng JMOD tool được giới thiệu với các mô-đun Java 9. Như đã nêu trong phần bình luận và được trả lời bởi @Jorn nếu bạn chỉ định thực hiện lớp học chính.

Bạn có thể chạy ứng dụng của bạn bằng cách sử dụng các nhị phân java trong thư mục bin của hình ảnh được tạo ra, và sử dụng lệnh:

java com.greetings.Main 

Mặt khác, một ví dụ việc tạo tệp JMOD sẽ được sử dụng làm mô-đun thêm như sau:

jmod create --class-path mods/com.greetings --cmds commands 
    --config configfiles --header-files src/h --libs lib 
    --main-class com.greetings.Main --man-pages man --module-version 1.0 
    --os-arch "x86_x64" --os-name "Mac OS X" 
    --os-version "10.10.5" greetingsmod 

EDIT: Đã mở rộng + làm rõ để có câu trả lời mà tôi đang tìm kiếm.

+0

Lệnh đầu tiên đó không sử dụng jlink hoặc đầu ra được tạo bởi jlink. Điều đó sử dụng hệ thống Java và các tệp .class đã biên dịch trong thư mục 'mods'. – clay

+0

@clay chính xác. đó là những gì tôi đã đề cập cũng * từ cấu trúc mô-đun. * .. cập nhật nó để làm cho nó rõ ràng. – nullpointer

+0

một câu hỏi bổ sung sẽ là: làm thế nào để bạn gỡ lỗi các hình ảnh tùy chỉnh? The -Xdebug không hoạt động – madduci

Các vấn đề liên quan