Java Can';t解析方法readAllBytes() 我想做什么

Java Can';t解析方法readAllBytes() 我想做什么,java,gradle,client-server,Java,Gradle,Client Server,我正在尝试构建一个java.net应用程序,在这个应用程序中,客户端和服务器必须通过串行收集类型(如byte[])相互发送数据 问题 由于未知原因,我的DataInputStream无法解析方法readAllBytes() 一个朋友把它扔进了他的IDE,它没有抱怨。我不确定这怎么可能是一个版本问题,但我检查了,我没有误解我的项目。我正在使用Java8 public void startClient(){ 试一试{ 套接字客户端=新套接字(“localhost”,7000); DataOutput

我正在尝试构建一个java.net应用程序,在这个应用程序中,客户端和服务器必须通过串行收集类型(如
byte[]
)相互发送数据

问题 由于未知原因,我的DataInputStream无法解析方法
readAllBytes()

一个朋友把它扔进了他的IDE,它没有抱怨。我不确定这怎么可能是一个版本问题,但我检查了,我没有误解我的项目。我正在使用Java8

public void startClient(){
试一试{
套接字客户端=新套接字(“localhost”,7000);
DataOutputStream out=新的DataOutputStream(client.getOutputStream());
writeUTF(“你好,我是”+client.getLocalSocketAddress());
DataInputStream输入=新的DataInputStream(client.getInputStream());
byte[]sent=input.readAllBytes();/“无法解析方法'readAllBytes()'
getDataFromClient(input.readAllByes());
//“无法解析方法'readAllBytes()'
client.close();
}捕获(未知后异常e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}

我确实确信这个方法应该得到支持,但我不明白为什么不支持

包含该方法的项目也是一个Gradle项目。因此,为了完成这幅图,这是build.gradle:

编辑:根据答案,Java 8不够,我应该使用Java 9。经典的RTFM问题。

根据javadoc方法,该方法是在Java9中引入的

自:

九,


如果代码是编译的或是较低版本的Java,它就不起作用了,在您的例子中是Java 8。

您是为Java 8编译的,但是文档是为Java 9编译的。
readAllBytes()
仅在Java 9中开始提供。我在使用intellij IDEA时也遇到了同样的问题。我以为我是为Java11编译的,但实际上我是为Java8编译的。如果您使用intellij IDEA IDE,您可以检查.IDEA文件夹中的compiler.xml文件,并检查
元素。写一个答案并获得投票
plugins {
    id 'java'
    id 'application'
}

sourceSets {
    main {
        resources {
            srcDirs = ["src/main/java"]
            includes = ["**/*.fxml","**/*.png"]
        }
    }
}

group 'prog3'
version '0.1'
mainClassName='Client'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
    testCompile group: 'org.mockito', name: 'mockito-core', version: '2.1.0'
}