[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-runtime-dev
Subject:    RE: RFR(M): 8199940: Print more information about class loaders in IllegalAccessErrors.
From:       "Lindenmaier, Goetz" <goetz.lindenmaier () sap ! com>
Date:       2018-05-25 6:39:00
Message-ID: bc1a1602c019493cbd6d359060890aa1 () sap ! com
[Download RAW message or body]

Hi Mandy, 

thanks for looking at my change!

> > I changed  the code as agreed:
> > http://cr.openjdk.java.net/~goetz/wr18/8199940-exMsg-IllegalAccess/02/

> > The message is now:
> > "class test.IAE1_B cannot access its superinterface test.IAE1_A"
> > if there are no names in the loaders.
> 
> For this IAE, it should include the module in the message as:
> class test.IAE1_B (in unnamed module @0x3d04a311) cannot access its
> superinterface test.IAE1_A (in module m1)

Wouldn't it be better if we extend class_loader_and_module_name() to print
module@0x3d04a311/test.IAE1_B if we pass a flag 'verbose' or the like?
I think that is the  way Lois would prefer.
If the modules differ, we could add some more text:

"class module@0x3d04a311/test.IAE1_B cannot access its superinterface m1/test.IAE1_A \
because they are in different modules"

One still would not know this was caused by using different loaders in the \
implementation ...  
> > How should anybody know from the message that the classes were
> > loaded by different loaders? It gives no hint at all to the cause of
> > the problem.
> The above is one example that does not have the loader name.
> Each module is defined to one loader so it can derive from
> the module info.
> 
> > > java.lang.IllegalAccessError: tried to access private method
> > > MySameClassLoader/m2x/p2.c2.method2()V from class
> > > MySameClassLoader/m1x/p1.c1
> 
> What about other formats:
> 
> tried to access private method p2.c2.method2()V (in module m2x) from
> class p1.c1 (in module m1x)
Hmm, as above, Lois wants me to use class_loader_and_module_name().
Also, in none of my examples, modules have a name or are handled by 
the code in any way.  So it's quite misleading if the modules are reported
as issue while it's in first place caused by the class loaders (which might
induce modules that then cause the error.)

> if the loader name is highly desirable (I'm unsure yet):
Yes it is. It can be set by the developer and if he does so it should be printed. 
The modules here seem to be generated automatically.  Maybe they should 
derive their names from the class loaders if the relation between them is 
that obvious?

> tried to access private method p2.c2.method2()V (in module m2x defined
> to MySameClassLoader) from class p1.c1 (in module m1x defined to
> MySameClassLoader)
> 
> Mandy


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic