JEL 477 Issue

Jonathan Gibbons jonathan.gibbons at oracle.com
Tue Jul 30 17:43:06 UTC 2024


Even without special-casing `main`, the error message is misleading 
because it says `class, interface, enum, or record expected` and does 
not admit the possibility of `void` in this particular circumstance.

-- Jon


On 7/30/24 9:57 AM, Remi Forax wrote:
>
>
> ------------------------------------------------------------------------
>
>     *From: *"Jaikiran Pai" <jai.forums2013 at gmail.com>
>     *To: *"jdk-dev" <jdk-dev at openjdk.org>
>     *Sent: *Tuesday, July 30, 2024 5:43:34 PM
>     *Subject: *Re: JEL 477 Issue
>
>     > import module java.base;
>     >
>     > main() {
>     >
>     >    println("Moose");
>     >
>     >}
>
>     It appears that you are missing a "void" return type before the
>     main() method name. As noted in the JEP-477, it should be:
>
>     import module java.base;
>     void main() {
>         println("Moose");
>     }
>
>
> that said, if we want beginners to be able to use that syntax, the 
> error message should be changed because the current message is 
> misleading and not very helpfull (javac should recognize "main" and 
> have a tailored error message).
>
> @Ken, you do not need to import module java.base, it's done by default 
> and --source 23 is not needed anymore since 23.
>
>
>     -Jaikiran
>
>
> regards,
> Rémi
>
>
>     On 30/07/24 9:05 pm, omniprof at gmail.com wrote:
>
>         I apologize for posting what is likely a trivial question that
>         may be inappropriate for this list but I cannot find anywhere
>         in my searches to explain what is going wrong. Simply put JEP
>         477 does not work in the pre-release version of Java 23 on a
>         Windows 11 PC. There is a lot written that all show a similar
>         example.
>
>         *>> Here is the program*
>
>         import module java.base;
>
>         main() {
>
>             println("Moose");
>
>         }
>
>         *>> Here is the version of Java I am running*
>
>         C:\dev\Onramptesting\OnRamptest\src>java --version
>
>         openjdk 23-ea 2024-09-17
>
>         OpenJDK Runtime Environment (build 23-ea+34-2361)
>
>         OpenJDK 64-Bit Server VM (build 23-ea+34-2361, mixed mode,
>         sharing)
>
>         *>> Here I run the code with all the required switches. The
>         errors are the same with or without Xlint*
>
>         C:\dev\Onramptesting\OnRamptest\src>javac --enable-preview
>         --source 23 -Xlint:preview Main.java
>
>         Main.java:1: warning: [preview] module imports are a preview
>         feature and may be removed in a future release.
>
>         import module java.base;
>
>                ^
>
>         Main.java:3: error: class, interface, enum, or record expected
>
>         main() {
>
>         ^
>
>         Main.java:5: error: class, interface, enum, or record expected
>
>         }
>
>         ^
>
>         2 errors
>
>         1 warning
>
>         Note that I get the same results for –source 23 and –release 23
>
>         Trying single file:
>
>         java –enable-preview Main.java
>
>         does not work as well.
>
>         Same result using Console or PowerShell in Windows.
>
>         What am I doing wrong?
>
>         Ken Fogel
>
>         omniprof at gmail.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jdk-dev/attachments/20240730/f69f499b/attachment.htm>


More information about the jdk-dev mailing list