无法解析方法 readAllBytes()

Tob*_*olb 2 java client-server gradle

我想做什么

我正在尝试构建一个 java.net 应用程序,其中客户端和服务器必须通过序列化集合类型作为byte[].

问题

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

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

  public void startClient() {
        try {
            Socket client = new Socket("localhost", 7000);
            DataOutputStream out = new DataOutputStream(client.getOutputStream());
            out.writeUTF("Hi i'm " + client.getLocalSocketAddress());
            DataInputStream input = new DataInputStream(client.getInputStream());
            byte[] sent = input.readAllBytes(); //"can't resolve method 'readAllBytes()'
            getDataFromClient(input.readAllByes());
//"can't resolve method 'readAllBytes()'
            client.close();


        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我实际上确定应该支持此方法,但我无法弄清楚为什么不支持,因为它被列为从 Input Stream (docs.oracle.com) 继承的方法

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

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'
}
Run Code Online (Sandbox Code Playgroud)

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

Kar*_*cki 7

根据InputStream.readAllBytes()方法 javadoc,该方法是在 Java 9 中引入的。

自从:

9

当代码被编译或较低的 Java 版本时它不会工作,在你的情况下是 Java 8。