2017-01-25 20 views
6

Tôi cố gắng để chạy bên dưới mã sử dụng jdk-9 nhưng phải đối mặt với vấn đề khi biên dịch sử dụng lệnhLàm thế nào để giải quyết module-info.java biên dịch lỗi trong Jdk9/java-9

lệnh

javac -d mods .\module-info.java com\nirav\modi\Test.java 

Lỗi

.\module-info.java:1: error: class, interface, or enum expected 
module module1 { } 
^ 
1 error 

module-info.java

module module1 { 

} 

Test.java

package com.nirav.modi; 

class Test { 

    public static void main(String args[]){ 

     System.out.println("Hello Modular..."); 

    } 

} 

gói cấu trúc là như dưới đây

module1\module-info.java 
module1\com\nirav\modi\Test.java 

JDK Version

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

Trả lời

1

Có vẻ như bạn đang biên soạn với phi jigsaw jdk xây dựng ở đây ... ở đây là liên kết được họ jigsaw

Với trình biên dịch rằng những mẫu tương tự mà bạn đã biên dịch tốt trên máy tính xách tay của tôi.

Đây là cách java -version trông giống như cho ghép hình dự án:

java version "9-ea" 
Java(TM) SE Runtime Environment (build 9-ea+153-jigsaw-nightly-h6003-20170124) 
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+153-jigsaw-nightly-h6003-20170124, mixed mode) 

EDIT Nó hoạt động với cả hai ghép và không ghép hình xây dựng. Tôi vừa thử nó (xây dựng 149)

EDIT2 Vì vậy, tôi đã cố gắng với jdk-9 build 153 và đây là những gì tôi nhận:

javac -d mods module-info.java Modules.java 
module-info.java:1: warning: [module] module name module1 should avoid terminal digits 
module module1 { 
    ^
1 warning 

loại bỏ các "1" và chạy cùng lệnh biên soạn thư mục OK và mods được tạo ra với cả hai tệp lớp được biên dịch tốt.

+0

Có hai jdk cho java-9? như bình thường và với mô đun? –

+2

Hầu hết các tính năng mô-đun cũng có thể được tìm thấy trong bản dựng "thông thường". @Eugene: Bạn đã thử liệu nó có thực sự không hoạt động trên một trong số đó không? (Không có thời gian để thử ngay bây giờ.) – Nicolai

+2

@Nicolai thất bại của tôi .. nó hoạt động thực sự với việc xây dựng đơn giản. Tôi sẽ cập nhật câu trả lời – Eugene

7

Mỗi Jigsaw Issues List, tên mô-đun không được kết thúc bằng một số. Mục đích là để ngăn cản các tác giả mã hóa số phiên bản trong tên mô-đun.

+2

Lưu ý rằng hiện tại có (xem dấu thời gian bình luận này) một đề xuất để "quay lại" hạn chế. (Cá nhân, tôi hy vọng nó không thành công ... nhưng nó không phải là cuộc gọi của tôi.) –

+1

@StephenC Sau khi phản hồi rộng, đặc điểm kỹ thuật đã được sửa đổi để cho phép các chữ số ở cuối tên mô-đun: http://openjdk.java.net/projects/ jigsaw/spec/issues/# Phiên bảnInModuleNames – ZhekaKozlov

+0

cảm ơn bạn đã cập nhật! – Jay

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