IntelliJ IDEA运行JDK 19-ea问题

最近Java热门项目Loom进展很好,尝试本地运行下新功能,分享遇到的一些问题。

IntelliJ IDEA使用的版本是:2021.3.2 (Ultimate Edition),Build #IU-213.6777.52, built on January 28, 2022。看着还挺新的,可惜还不够最新,后文会提到。

首先按照如下步骤安装JDK 19最新的预览版本。关于Loom的更多信息:Loom Early-Access Builds

下载JDK 19预览版,以Mac为例:

https://download.java.net/java/early_access/jdk19/28/GPL/openjdk-19-ea+28_macos-x64_bin.tar.gz

下载完解压到相应位置,进入目录/Applications/jdk-19.jdk/Contents/Home/bin

执行如下命令:

tech@mymac bin % ./java --version
openjdk 19-ea 2022-09-20
OpenJDK Runtime Environment (build 19-ea+28-2110)
OpenJDK 64-Bit Server VM (build 19-ea+28-2110, mixed mode, sharing)

JDK 19安装没问题,接下来集成到Idea中,新建jdk_19项目。

1.配置项目SDK

添加刚安装的JDK成为Idea的SDK

IntelliJ IDEA运行JDK 19-ea问题_第1张图片

完成后选择这个SDK,Language level选择“X-Experimental”

IntelliJ IDEA运行JDK 19-ea问题_第2张图片

Modules中依赖SDK也需要配置

IntelliJ IDEA运行JDK 19-ea问题_第3张图片

 写一个简单的测试代码试验下:

package com.echx.jdk19;

public class TestLoom {

    public static void main(String[] args) throws InterruptedException {
        System.out.println("Current jdk version:"+System.getProperty("java.version") );
        System.out.println("1-Run in main thread, Currrent ThreadName:"+Thread.currentThread().getName());
        Thread thread1 = Thread.ofVirtual().start(new Runnable() {
            @Override
            public void run() {
                System.out.println("Run in virtual thread, Currrent ThreadName:"+Thread.currentThread());
            }
        });
        System.out.println("2-Run in main thread, Currrent ThreadName:"+Thread.currentThread().getName());
        thread1.join();

        Thread thread = new Thread(new Runnable(){
            @Override
            public void run() {
                System.out.println("Run in classic thread, Currrent ThreadName:"+Thread.currentThread().getName());
            }
        });
        thread.start();
        thread.join();
    }
}

测试代码做的事情:起了一个Virtual Thread,打印当前线程信息,与普通线程做个对比。

开始build,很不幸出现以下错误:

java: ofVirtual() 是预览 API,默认情况下处于禁用状态。
  (请使用 --enable-preview 以启用预览 API)

配置--enable-preview到编译环境

IntelliJ IDEA运行JDK 19-ea问题_第4张图片

再次不幸,出了以下错误提示: 

java: 源发行版 18 与 --enable-preview 一起使用时无效
  (仅发行版 19 支持预览语言功能)

而这个错误最终导致了放弃在Idea中测试JDK 19的预览功能。

经过漫长的网上漫游寻找解决方案,多种配置方式都无法解决这个错误,最终据说是只能更新到最新版Idea,在Compiler配置如下参数:-enable-preview --source 19

切换到命令行,直接编译运行了。

进入到该项目的src目录下。

/Applications/jdk-19.jdk/Contents/Home/bin 是JDK 19-EA安装目录。

编译:

/Applications/jdk-19.jdk/Contents/Home/bin/javac --release 19 --enable-preview -Xlint:preview com/echx/jdk19/TestLoom.java

注意加上参数:--release 19 --enable-preview

有一个警告提示,可以忽略:

com/echx/jdk19/TestLoom.java:8: 警告: [preview] ofVirtual() 是预览 API,可能会在未来发行版中删除。 Thread thread1 = Thread.ofVirtual().start(new Runnable() { ^ 1 个警告

运行:

/Applications/jdk-19.jdk/Contents/Home/bin/java --enable-preview com.echx.jdk19.TestLoom

得到如下输出:

Current jdk version:19-ea
1-Run in main thread, Currrent ThreadName:main
2-Run in main thread, Currrent ThreadName:main
Run in virtual thread, Currrent ThreadName:VirtualThread[#21]/runnable@ForkJoinPool-1-worker-1
Run in classic thread, Currrent ThreadName:Thread-0

成功!可以看到Virtual Thread是在ForkJoinPool的一个实际线程中运行。

你可能感兴趣的:(Java,java,intellij-idea,开发语言,loom,enable-preview)