Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法识别java 8 lambda,但配置正常_Java_Spring_Hibernate_Intellij Idea - Fatal编程技术网

无法识别java 8 lambda,但配置正常

无法识别java 8 lambda,但配置正常,java,spring,hibernate,intellij-idea,Java,Spring,Hibernate,Intellij Idea,我在Intellij中导入了一个包含Spring和Hibernate以及所有Java8内容的程序,我有一个问题,Java8没有被看到。JDK已设置,导入正常;我真的不明白为什么我的IDE在这段代码下面加了红色下划线。代码是: @Entity @Table(name = "author") public class Author extends BaseEntity<Long> { @Column(name = "name") private String name;

我在Intellij中导入了一个包含Spring和Hibernate以及所有Java8内容的程序,我有一个问题,Java8没有被看到。JDK已设置,导入正常;我真的不明白为什么我的IDE在这段代码下面加了红色下划线。代码是:

@Entity
@Table(name = "author")
public class Author extends BaseEntity<Long> {

    @Column(name = "name")
    private String name;

    @OneToMany(mappedBy = "author", fetch = FetchType.EAGER)
    private List<Book> bookList;

    public Author() {
    }

    public Author(String name, List<Book> bookList) {
        this.name = name;
        this.bookList = bookList;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Book> getBookList() {
        return bookList;
    }

    public void setBookList(List<Book> bookList) {
        this.bookList = bookList;
    }

    public Set<Book> getBooks() { // !!!!! here lines 1
        return Collections.unmodifiableSet( // 2
                this.bookList.stream(). // 3
                        collect(Collectors.toSet()));//4 are red
    }
它也是红色的。当我点击错误时,它会显示:

Incompatible types.Required set <packet.model.book> 
                  Found set <java.lang.Object>
不兼容的类型。必需设置
集合

第一方面可能有什么问题?

我想你用的是maven,对吗?如果是,请检查在
pom.xml
中定义的java版本,如果未定义,IDE将使用与
1.8
不同的默认值

您可以使用jdk版本并将其显式设置为
1.8

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <showWarnings>true</showWarnings>
        <encoding>${project.build.sourceEncoding}</encoding>
    </configuration>
</plugin>

org.apache.maven.plugins
maven编译器插件
3.5.1
1.8
1.8
真的
${project.build.sourceEncoding}

请确保您已经将语言级别设置为Java8。如果您转到文件->项目结构->项目设置->项目,您可以在那里配置项目SDK和项目语言级别。确保两者都设置为Java8。

我猜您使用的是maven,对吗?如果是,请检查在
pom.xml
中定义的java版本,如果未定义,IDE将使用与
1.8
不同的默认值

您可以使用jdk版本并将其显式设置为
1.8

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <showWarnings>true</showWarnings>
        <encoding>${project.build.sourceEncoding}</encoding>
    </configuration>
</plugin>

org.apache.maven.plugins
maven编译器插件
3.5.1
1.8
1.8
真的
${project.build.sourceEncoding}

请确保您已经将语言级别设置为Java8。如果您转到文件->项目结构->项目设置->项目,您可以在那里配置项目SDK和项目语言级别。确保两者都设置为Java 8。

在项目结构中设置Java 8
ctrl+alt+s
文件->项目结构

请参见下图


在项目结构中设置Java8
ctrl+alt+s
文件->项目结构

请参见下图