Reputation: 4190
I'm using ClassPath.getAllClasses
from Guava
to find in runtime classes that implement a certain interface. When used with rt.jar
it finds many classes from sun.*
and similar packages and I'd like to filter them out.
I want to reuse the mechanism used by Eclipse and maybe other java compilers to warn about restricted API. Does this information reside JRE or hardcoded into Eclipse?
Upvotes: 3
Views: 265
Reputation: 34165
This information is stored in so-called Execution Environments profiles inside of Eclipse.
Because these profiles are originally an OSGi thing (see Bundle-RequiredExecutionEnvironment
), the profiles are stored in the org.eclipse.osgi plugin/bundle in *.profile
files that each contains a whitelist of the accessible packages (org.osgi.framework.system.packages
), e. g. here for JavaSE-1.8
.
If you create a new Java project you can choose either
sun.*
packages orAfter project creation the chosen JRE can be changed in Project > Properties: Java Build Path, tab Libraries by selecting the JRE and clicking Edit....
In addition, since the Java Platform Module System, introduced with Java 9, the JRE itself restricts access to some packages (and instead of the file rt.jar
there is the file modules
).
Upvotes: 5