2017-09-30 2 views
4

Ich habe versucht, ein Java 9-Modul zu schreiben, aber egal was ich tue, bekomme ich den Fehler "Paket ist leer oder existiert nicht". Ich habe versucht, online nach dem erwarteten Verzeichnis-Layout zu suchen, und habe versucht, jede Variation des Verzeichnis-Layouts, das ich mir vorstellen kann, aber nichts funktioniert.Verzeichnis Layout für Java 9 Module

Zum Beispiel, hier ist ein Layout ich

versuchte

bar.foo/module-info.java

module bar.foo { 
    exports bar.foo; 
} 

bar.foo/bar/foo/wtf.java

package bar.foo; 

public class wtf { 
} 

jedoch Compilation gibt immer noch die gleichen Fehler wie gewohnt.

> javac bar.foo/module-info.java 
bar.foo/module-info.java:2: error: package is empty or does not exist: bar.foo 
    exports bar.foo; 
      ^
1 error 

Antwort

3

Der Befehl statt, die funktionieren sollte, ist:

javac bar.foo/module-info.java bar.foo/bar/foo/wtf.java 

Der Grund dafür ist, sind Sie versuchen, eine Klasse zu erstellen, die ein Paket heißt bar.foo in Ihrem Fall bestehen erfordert. Da Sie jedoch keinen erstellt haben, löst der Compiler den erwähnten Fehler aus.

Es geht nicht um das Verzeichnislayout, sondern um den .class, der vom Compiler ausgewertet wird. Wenn Sie Ihre andere Klasse (bar.foo/bar/foo/wtf.java) bereitstellen, wird das wtf.class innerhalb dieses Pakets erstellt und daher kompiliert der Compiler auch die module-info.class.

Verwandte Themen