15 RFR(XS): 8165276: Spec states that invoke the premain method in an agent class if it's public but implementation differs

Alan Bateman Alan.Bateman at oracle.com
Wed Jun 24 06:33:12 UTC 2020



On 24/06/2020 07:24, serguei.spitsyn at oracle.com wrote:
> :
>
> One approach would be to continue using the setAccessible and add 
> extra check for non-public premain method.
> Something like should probably work:
>         if (!(Modifier.isPublic(m.getModifiers())) {
>             throw new IllegalAccessException("premain method is not 
> public");
>         }
The equivalent with the java launcher is:

$ java Foo.java
error: 'main' method is not declared 'public static'

$ javac Foo.java
$ java Foo
Error: Main method not found in class Foo, please define the main method as:
    public static void main(String[] args)

So have the exception message provide a helpful message will be useful 
in the event that someone tries to deploy that doesn't have a public 
premain method.

BTW: Have you checked the agentmain case too?

-Alan.







More information about the serviceability-dev mailing list