2017-10-14 4 views
0

Warum warnt der Java 9-Compiler "erfordert Anweisung für ein automatisches Modul" wenn module-info.java auf automatische Module mit "Automatic-Module-Name" verweist? Was ist das Risiko solcher Module?Warum javac beschwert sich über benannte automatische Module?

Diese Frage ist kein exaktes Duplikat von What is an automatic module?, weil letzteres die spezifischen Gründe hinter der Compilerwarnung, auf die ich verwiesen habe, nicht anspricht (der Kontext der Frage ist wichtig). Dennoch ist es ein nützlicher Link für das Nachlesen.

+2

Nicht ein genaues Duplikat obwohl, aber IMHO die Antwort darauf wird in [Was ist ein automatisches Modul?] (Https://stackoverflow.com/questions/46741907/what-is-anautomatic-module) .. Nur dass es Remis Perspektive nicht ausdrücklich einschließt. – nullpointer

+4

Mögliches Duplikat von [Was ist ein automatisches Modul?] (Https://stackoverflow.com/questions/46741907/what-is-anautomatic-module) – ZhekaKozlov

+2

Btw, Sie können diese Warnung deaktivieren, indem Sie die Zusatzoption von javac verwenden "- Xlint ", zum Beispiel" -Xlint: all, -requires-automatic "was bedeutet, dass alle Warnungen aktiviert werden, aber die Warnung vor der Verwendung von automatischen Modulen in den requires-Klauseln". – Male

Antwort

2

Zitiert Remi Forax:

Das Hauptproblem ist, dass eine automatische Modulklassen aus dem Classpath sehen können, sondern exportiert auch alle seine Paket so keine Einkapselung ist, und wenn Sie benötigen ein automatisches Modul alle automatischen Module aus dem Modulpfad sind sichtbar.

So ein automatisches Modul ist ein großartiges Werkzeug, wenn Sie in die Welt der Module, aber in Ordnung, Sie wollen keine automatischen Module in Ihrem Abhängigkeitsdiagramm.

+0

Versteh mich nicht falsch, aber jedes Mal, wenn ich diese Antwort lese, fühle ich, dass dies bereits in der duplizierten verbundenen Frage behandelt wurde. Was ist der Unterschied hier, könntest du das auch in die Antwort einbauen? – nullpointer

+0

@nullpointer die akzeptierte Antwort der verknüpften Frage diskutiert automatische Module ausführlich. Wenn wir diese Frage als Duplikat schließen würden, wäre es nicht klar, welche Teilmenge der 2-seitigen Antwort die betreffende Compilerwarnung adressiert. Es ist wie die Frage "Warum bekomme ich diesen Java-Compilerfehler?" und jemand, der die Java-Sprachspezifikation als Antwort veröffentlicht. Sicher, die Antwort ist irgendwo da, aber viel Glück, es zu finden :) – Gili

+0

Und wenn Sie wissen, es ist dort und eine gute Sache, darauf hingewiesen werden, können Sie vorschlagen (Kommentar) sowie die Antwort bearbeiten, um die Informationen zu bringen. Eine andere Frage zu stellen, um eine spezifische Spalte daraus zu machen, ist ebenfalls nicht gerechtfertigt. – nullpointer

Verwandte Themen