On Fri, Sep 11, 2015 at 6:09 AM, Alan Bateman <[email protected]> wrote:
>
> I'm not sure that I understand the issue here but just to say that the
> com.sun.management API is a documented/supported API and it exported by
> module jdk.management:
>
> $ java -listmods:jdk.management
>
> [email protected]
> requires public java.management
> requires mandated java.base
> exports com.sun.management
> conceals com.sun.management.internal
> provides sun.management.spi.PlatformMBeanProvider with
> com.sun.management.internal.PlatformMBeanProviderImpl
>
Here is code that fails:
import java.lang.reflect.*;
import java.lang.management.*;
public class test {
public static void main(String args[]) throws Exception {
OperatingSystemMXBean osMxBean =
ManagementFactory.getOperatingSystemMXBean();
Method getTotalPhysicalMemorySize =
osMxBean.getClass().getMethod("getTotalPhysicalMemorySize");
getTotalPhysicalMemorySize.setAccessible(true);
System.out.println(getTotalPhysicalMemorySize.invoke(osMxBean));
}
}
Exception in thread "main"
java.lang.reflect.InaccessibleObjectException: Unable to make member
of class com.sun.management.internal.OperatingSystemImpl accessible:
module jdk.management does not export com.sun.management.internal to
<unnamed module @5f375618>
at
sun.reflect.Reflection.throwInaccessibleObjectException([email protected]/Reflection.java:462)
at
java.lang.reflect.AccessibleObject.checkCanSetAccessible([email protected]/AccessibleObject.java:194)
at
java.lang.reflect.AccessibleObject.setAccessible([email protected]/AccessibleObject.java:157)
at test.main(test.java:8)