2017-11-20 3 views
1

Ich wechsle zu Java 9 (für den HTTP/2-Client, neben anderen Vorteilen), aber nicht mit Java 9 Modularisierung.Gibt es eine Möglichkeit, Java 9 dazu zu bringen, nicht mehr über nicht zugängliche Pakete zu klagen?

Ich bekomme Tonnen von Compiler-Fehlern über nicht zugängliche Pakete. Jeder erfordert, dass ich ein zusätzliches --add-exports modulename/packagename=ALL-UNNAMED Compiler-Flag hinzufüge.

Gibt es ein Compiler-Flag, das ich einmal angeben kann, um alle Exporte hinzuzufügen und keine Compilerfehler mehr zu bekommen?

Hier Codebeispiel zeigt das Problem:

package com.prosc.fx; 

import com.sun.javafx.stage.WindowHelper; 

public class CompilerFlagTest { 
    public static void main(String[] args) { 
     WindowHelper.getWindowAccessor(); 
    } 
} 

Die Fehlermeldung lautet:

Error:(3, 22) java: package com.sun.javafx.stage is not visible (package com.sun.javafx.stage is declared in module javafx.graphics, which does not export it to the unnamed module)

+2

Können Sie die Frage um ein Beispiel erweitern? Bei einem Tipp versuchen Sie, Code mit Verweisen auf interne JDK-Klassen zu kompilieren. –

+0

Bearbeitete Frage, um Beispiel zu zeigen. Viele der Klassen sind in der Sonne. * Und com.sun. * Pakete. –

+2

Verwenden Sie diese Klasse nicht: Sie befindet sich in einem privaten Paket. Verwenden Sie die öffentliche API, nicht die private API. Siehe https://docs.oracle.com/javase/9/docs/api/javafx.graphics-summary.html –

Antwort

5

Die Klassen und Pakete, die Sie befinden sich in privaten Paketen erwähnen, eine neue Sichtbarkeit in dem Leiter. Dies bedeutet, dass Sie nicht darauf zugreifen können, da die gesamte Modularisierung obligatorisch und nicht optional ist. Auch wenn Sie keine Modularisierung verwenden, verwenden Sie sie.

Tun Sie sich also einen Gefallen und verwenden Sie die öffentliche API.

+1

Die Option, über die Sie sprechen, die entfernt wird, ist '--legal-access', ** not **' --add-exports'. Soweit ich weiß, ist Letzterer hier, um zu bleiben. – Nicolai

+0

@Nicolai Mein schlechtes, ich habe das bisschen entfernt. Vielen Dank! –

Verwandte Themen