Using java.awt.Toolkit.getDefaultToolkit().getScreenSize() reflectively causes InaccessibleObjectException

Remi Forax forax at univ-mlv.fr
Thu Jan 5 19:31:50 UTC 2017


In your script,
when you execute a.b().c(),
you should not call getClass() on the result of a.b() but using the return type of b() like the compiler do.

it will solve your issue.

cheers,
Rémi

----- Mail original -----
> De: "Rony G. Flatscher" <Rony.Flatscher at wu.ac.at>
> À: jdk9-dev at openjdk.java.net
> Envoyé: Jeudi 5 Janvier 2017 20:03:02
> Objet: Re: Using java.awt.Toolkit.getDefaultToolkit().getScreenSize()	reflectively causes InaccessibleObjectException

> Experimenting with further scripts indicates that this is a systematic problem
> whenever the official
> APIs return members that are not made available to an unnamed module: e.g.
> JavaFX some
> "com.sun.javafx.collections.VetoableListDecorator" or in a "plain" awt/swing app
> some
> "sun.java2d.SungGraphics2D".
> 
> ---rony
> 
> On 05.01.2017 19:42, Rony G. Flatscher wrote:
>> Trying to run a program that gets the screen dimensions using
>> java.awt.Toolkit.getDefaultToolkit().getScreenSize() reflectively.
>>
>> On a 64-bit Ubuntu the returned Toolkit is of type sun.awt.X11.XToolkit.
>> Reflectively invoking its
>> method getScreenSize() causes the following exception to be thrown on 9-ea+134:
>>
>>     java.lang.reflect.InaccessibleObjectException: unable to make member of class
>>     sun.awt.SunToolkit
>>     accessible: module java.desktop does not export sun.awt to unnamed module ...
>>
>> A little bit baffled as this is from a script that has been working flawlessly
>> throughout more than
>> a decade on various Java versions and which employs documented public methods
>> only (the sun.awt
>> object is returned by java.awt.Toolkit). Is this a known "legacy"problem :) that
>> I could circumvent
>> somehow or a bug that needs to be reported?
>>
>> ---rony


More information about the jdk9-dev mailing list