JEL 477 Issue

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Tue Aug 13 11:06:17 UTC 2024


If this is something that should be fixed, do we have a JBS issue 
tracking it?

/Magnus

On 2024-07-30 19:43, Jonathan Gibbons wrote:
>
> 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/20240813/71a9d542/attachment-0001.htm>


More information about the jdk-dev mailing list