无法将本机二进制文件复制到临时目录 Kinesis KPL

Ley*_*thG 5 scala amazon-web-services amazon-kinesis

我正在尝试构建一个简单的应用程序,它将使用 KPL 向 Kinesis 生成消息。我正在用 scala 编写此内容,并收到一条我似乎无法弄清楚的错误消息。我的代码如下:

import java.nio.ByteBuffer

import com.amazonaws.services.kinesis.producer.{KinesisProducer, KinesisProducerConfiguration}

object KinesisStream extends App{
  ProduceToKinesis()

  def ProduceToKinesis(): Unit ={

    val config = new KinesisProducerConfiguration()
    val kinesis = new KinesisProducer(config)
    val data = ByteBuffer.wrap("myData".getBytes("UTF-8"))

    kinesis.addUserRecord("TestStream", "myPartitionKey", data)
  }
}
Run Code Online (Sandbox Code Playgroud)

它失败于

val kinesis = new KinesisProducer(config)
Run Code Online (Sandbox Code Playgroud)

错误消息为:

Exception in thread "main" java.lang.RuntimeException: Could not copy native binaries to temp directory C:\Users\************\AppData\Local\Temp\amazon-kinesis-producer-native-binaries
    at com.amazonaws.services.kinesis.producer.KinesisProducer.extractBinaries(KinesisProducer.java:844)
    at com.amazonaws.services.kinesis.producer.KinesisProducer.<init>(KinesisProducer.java:242)
    at KinesisStream$.ProduceToKinesis(KinesisStream.scala:14)
    at KinesisStream$.delayedEndpoint$KinesisStream$1(KinesisStream.scala:9)
    at KinesisStream$delayedInit$body.apply(KinesisStream.scala:8)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
    at scala.App$class.main(App.scala:76)
    at KinesisStream$.main(KinesisStream.scala:8)
    at KinesisStream.main(KinesisStream.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.NullPointerException
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792)
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
    at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:462)
    at com.amazonaws.services.kinesis.producer.KinesisProducer.extractBinaries(KinesisProducer.java:803)
    ... 18 more
Run Code Online (Sandbox Code Playgroud)

我的 Build.SBT 看起来像这样:

name := "Kinesis"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies += "com.amazonaws" % "amazon-kinesis-producer" % "0.12.1"
Run Code Online (Sandbox Code Playgroud)

小智 1

我知道这个问题发布已经很久了。但最近我遇到了同样的问题,并且在网上找不到太多信息。幸运的是,我找到了解决方案,这可能对其寻求修复的其他人有所帮助。这是此处提到的版本问题https://github.com/awslabs/amazon-kinesis- Producer/issues/113#issuecomment-345028662 。当我将 KPL 版本降级到 0.13.1 时,它对我有用

这是对我有用的 pom 依赖项。

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>amazon-kinesis-producer</artifactId>
    <version>0.13.1</version>
</dependency> 
Run Code Online (Sandbox Code Playgroud)