2017-01-25 70 views
6

Próbuję uruchomić poniżej kod przy użyciu problemu jdk-9 ale stoi przy kompilacji za pomocą poleceniaJak rozwiązać module-info.java skompilować błąd w Jdk9/java-9

polecenia

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

błąd

.\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..."); 

    } 

} 

pakiet struktura jest jak poniżej

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

pakiet JDK

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) 

Odpowiedz

1

Wygląda kompilujesz z non-jdk kompilacji układanki tu ... tu jest link były one jigsaw

Z tego kompilatora te same próbki, które trzeba skompilować dobrze na moim laptopie.

ten sposób java -version wygląda na układanka projektu:

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 Działa zarówno z układanki puzzle i non-build. Właśnie próbował go (build 149)

EDIT2 Więc próbowałem z jdk-9 build 153 i oto co mam:

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 

usuwając "1" i działa tak samo skompilowane polecenie OK i katalog modów został utworzony z obydwoma skompilowanymi plikami klas dobrze.

+0

Są tam dwa jdk dla java-9? jak normalnie iz modułowością? –

+2

Większość funkcji modularności można również znaleźć w "regularnej" kompilacji. @Eugene: Czy próbowałeś, czy to naprawdę nie działa na jednym z nich? (Nie ma czasu, aby wypróbować teraz.) – Nicolai

+2

@Nicolai mój błąd ... działa naprawdę z prostą kompilacją. Zaktualizuję odpowiedź – Eugene

7

Według nazwy Jigsaw Issues List nazwa modułu nie może kończyć się liczbą. Celem jest zniechęcenie autorów do kodowania numerów wersji w nazwach modułów.

+2

Należy zauważyć, że obecnie jest (patrz ten znacznik czasu komentarza) propozycja "cofnięcia" ograniczenia. (Osobiście mam nadzieję, że się nie uda ... ale to nie mój telefon). –

+1

@StephenC Po szerokiej informacji zwrotnej, specyfikacja została zmieniona, aby umożliwić cyfry na końcu nazw modułów: http://openjdk.java.net/projects/ Wyrzynarki/spec/issues/# WersjeInModuleNames – ZhekaKozlov

+0

dzięki za aktualizację! – Jay