2017-12-20 95 views
7

Tôi gặp các tình huống sau đây:Cách thêm một số lọ vào đường dẫn mô-đun?

Mô-đun Địa chỉ:

module org.abondar.experimental.address { 
    exports org.abondar.experimental.address; 
} 

Mô-đun Person:

module org.abondar.experimental.person { 
    requires org.abondar.experimental.address; 
    exports org.abondar.experimental.person; 
} 

Tôi đang xây dựng cho họ sử dụng Maven, vì vậy mỗi mô-đun có nó dir mục tiêu riêng với jar tập tin.

Tôi cố gắng để chạy Person mô-đun trong đó có lớp học chính như thế này

java --module-path Address/target/Address-1.0.jar;Person/target/Person-1.0.jar -m org.abondar.experimental.person/org.abondar.experimental.person.Main 

Nhưng tôi nhận được sự cho phép từ chối. Làm thế nào để tôi cần thiết lập đường dẫn mô-đun bao gồm một số mô-đun?

+2

Hãy thể hiện toàn bộ nội dung của thông báo lỗi bạn đang nhận được (hoặc toàn bộ stack trace, nếu bạn' lại nhận được một ngoại lệ). – VGR

+1

Cũng sẽ thật tuyệt khi thấy 'pom.xml' của bạn –

Trả lời

4

Vâng cố gắng này trên một trong những dự án của tôi với hệ điều hành MacOS, tôi gần như đã kết thúc với một cái gì đó tương tự như thế này -

zsh: permission denied: .../.m2/repository/test/test/1.0.0-SNAPSHOT/test-1.0.0-SNAPSHOT.jar 
zsh: permission denied: .../.m2/repository/org/slf4j/slf4j-log4j12/1.7.12/slf4j-log4j12-1.7.12.jar 
zsh: permission denied: .../.m2/repository/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar 

Lý do cho lỗi đó là các đường dẫn đến các lọ được quy định dưới dạng command to be executed on MacOS instead.

Nếu bạn xem xét đường dẫn mô-đun dưới dạng danh sách các thư mục cho MacOS (có thể là Unix nói chung), nó không khớp với java tool documentation. Thay vì những gì bạn có thể tìm kiếm là

java --help 

trong đó nêu

--module-path <module path> ... Một : tách ra danh sách các thư mục, mỗi thư mục là một thư mục của module.

và trong trường hợp đó các lệnh đó sẽ làm việc cho bạn sẽ là: -

java --module-path Address/target/Address-1.0.jar:Person/target/Person-1.0.jar -m org.abondar.experimental.person/org.abondar.experimental.person.Main 
+2

Tôi muốn biết vị trí của "quyền bị từ chối". Đây có phải là một tập lệnh thay vì java không? Trên đường dẫn mô-đun thì 'java --help' không có đủ không gian trong đầu ra của nó để hiển thị tất cả chi tiết. Thay vào đó, hãy xem JEP 261 nơi bạn sẽ thấy rằng các mục trên đường dẫn mô-đun có thể là các mô đun hoặc các thư mục của các mô-đun. –

+0

@AlanBateman Lúc đầu dường như với tôi là tốt, như đầu ra '--help' không hoàn toàn chứa trong đầu ra và cùng với điều đó xảy ra sự cho phép này bị từ chối. Hãy xem xét kỹ hơn để tìm hiểu chính xác những gì đang gây ra sự cho phép bị từ chối. (Đối với tôi ít nhất) – nullpointer

+0

@AlanBateman Bởi * một trong các dự án của tôi với MacOS * Tôi có nghĩa là tôi đã thực hiện một lệnh tương tự với đường dẫn riêng biệt ***; *** và đó là nơi tôi gặp lỗi được chia sẻ ở trên. Đường dẫn trong dòng lệnh của tôi có các thư mục * .m2/repository *. Ngoài ra để thêm vào các chi tiết, tôi nhận được một lỗi tương tự trong khi tôi cố gắng một cái gì đó đơn giản như '../. M2/repository/test/test/1.0.0-SNAPSHOT/test-1.0.0-SNAPSHOT.jar' (có , không có lệnh nào khác ngoài điều này). có lẽ vỏ chịu trách nhiệm cho nó. Còn lại một chút bối rối bản thân mình. – nullpointer

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