当前位置: 首页 > 知识库问答 >
问题:

无法解析方法readAllBytes()

上官恩
2023-03-14

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

由于未知原因,我的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();
        }
    }

实际上,我确信应该支持这个方法,但我不明白为什么不支持,因为它是作为一个方法列出的,从输入流(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'
}

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

共有1个答案

秦浩漫
2023-03-14

根据InputStream.readAllBytes()方法javadoc,该方法在Java9中引入。

由于:

9

如果代码是在较低的Java版本上编译的,在您的例子中是Java 8,那么它将不起作用。

 类似资料:
  • 我正在通过Android Studio中的一个应用程序工作,该应用程序使用学校意图传递数据。我已经创建了传递数据的对象,并启动了,但是我不断收到一个警告,说我的方法无法解析。有什么想法吗?提前谢了。

  • 正如文件所述: Android O允许您通过在res/字体/文件夹中添加字体文件来捆绑字体作为资源。 结果: 您可以使用getFont(int)方法检索字体,其中需要传递要检索的字体的资源标识符。此方法返回Typeface对象。这将对字体的第一个重量或样式变体(如果是字体系列)进行编码。然后可以使用字体。create(typeface,style)方法来检索特定样式。 注意:TextView已经为

  • > 在菜单项和添加导航头之间导航的代码由一个方法组成。 由于作者没有提到在哪里粘贴这段代码,我粘贴在我的文件中 在菜单项之间导航和添加导航标题之间的代码是否由我粘贴在正确的位置? 在方法selectDrawerItem(MenuItem MenuItem)中有一条注释,创建一个新片段,并根据位置指定要显示的行星,作者是否希望我在这里添加一些内容。

  • 我试图使用for循环迭代一系列的日期,我打算使用plusDays增加开始日期,但是我得到了“Canland resolve method plusDays in date”。下面是我的代码:

  • 我正在尝试为改造设置缓存,以便它不必不断检索数据。我遵循了这个SO,因为它似乎在我需要的正确方向上。 我有以下内容(与销售订单相同) 但是,返回错误。 我在这里做错了什么?我有改造2.1.0和okhttp3 3.4.1

  • 如何解决此错误?我在这段代码中遇到了一个错误: 无法解决方法的add(int,android.trey.startingpoint.nl.秒活动。碎片 谢谢你的帮助! 编辑:导入: 导入android。应用程序。活动导入android。支持v4。应用程序。碎片 导入android。操作系统。捆导入android。看法更平坦;导入android。看法菜单导入android。看法MenuItem;导入