Suppress javac warning "...is internal proprietary API and may be removed in a future release"

Solution 1:

This particular warning cannot be suppressed. At least not officially.

The warning about proprietary API means that you should not use the API which causes the warning. Sun does not support such API and the warning will not be suppressible.

If you're particularly determined, you can use the highly undocumented javac -XDignore.symbol.file flag which will compile your program against Sun's internal rt.jar rather than the public-facing symbol file ct.sym. rt.jar doesn't produce this warning.

Solution 2:

If you are using maven, you might be interested in adding the following to your pom.xml file:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArgument>-XDignore.symbol.file</compilerArgument>
    </configuration>
</plugin>

Solution 3:

see this answer

Cannot stop ant from generating compiler Sun proprietary API warnings

Testing code

@SuppressWarnings("sunapi")
sun.security.x509.X509CertImpl test;

compiling command line

javac test.java -Werror -Xlint:sunapi -XDenableSunApiLintControl

or

javac test.java -Werror -Xlint:all -XDenableSunApiLintControl

compile passed without any warnings

remove the SuppressWarnings tag and compile again:

an error is reported then

test.java:4: warning: X509CertImpl is internal proprietary API and may be removed in a future release
        sun.security.x509.X509CertImpl test;
                     ^
error: warnings found and -Werror specified
1 error
1 warning

Solution 4:

Reference its interface CachedRowSet not the implementation.