IDEA使用新版本Java API遇到的问题

IDEA Aug 27, 2018

前言

Java 10都发布了快要半年了,然后我对Java 8还没完全搞明白,更别提Java 9新出的模块系统了。都说前端技术更新快,Java现在也很快啊。所以在Java 11要出来之前,打算对Java 9和Java 10的新特性进行一些尝试。

问题

当我兴致勃勃的尝试Java 8带来的Optional类,在体验他的各种骚操作的时候,说好的stream方法怎么没有,代码提示也看不到。在问过度娘以后知道这个是Java 9才提供的功能。赶紧把我project的配置升级到Java 10(就是这么任性,一步到位)如下图所示:

Ps:如果你发现还是没有提示可能是因为没有修改module的sdk,如下图:

这时候就可以看到IDE对stream方法的代码提示,也不会有报错了。但是!!!当我运行的时候报错了!提示找不到符号。


为什么呢?我明明设置了project的sdk为Java 10了。想想IDEA run项目的时候项目的配置一般是在这里的,看一下配置的sdk版本是Java 10所以应该没有问题。


还有哪里呢?想到了还有一个地方,这里对Java compiler的输出bytecode version是Java 8版本,所以编译的时候无法引用Java 9的API。改成10以后就可以正确编译运行了。

Ps:如果使用Maven对项目进行编译打包的时候也需要配置下,在pom.xml中添加如下代码

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

如果提示maven:Fatal error compiling: 无效的目标 发行版:9,我本地是因为没有更新JAVA_HOME变量到JDK 10目录的原因。echo $JAVA_HOME查看本地变量是否是正确的,不正确修改以下就可以了。

总结:

对平时使用的工具还是要有一定的了解呀,要不遇到问题了会比较麻烦。

zzx

There is my place for writing,coding and reading