【问题标题】:Object creation impossible in scala在 scala 中不可能创建对象
【发布时间】:2014-10-26 09:10:31
【问题描述】:

执行以下代码时出现以下错误。

Object creation impossible, since member nextPacket(PcapPacket,T):void
  in org.jnetpcap.packet.PcapPacketHandler is not defined.

如何解决?

while (true) {
  val jpacketHandler = new PcapPacketHandler[String] {
    def nextPacket(packet: PcapPacket, user: String) {
      val data = new KeyedMessage[String, PcapPacket](topic.toString, packet)
      println(data)
      producer.send(data)
    }
  }
  pcap.loop(50, jpacketHandler, "jNetPcap works!")
}

【问题讨论】:

  • 通过在org.jnetpcap.packet.PcapPacketHandler中定义nextPacket(PcapPacket,T):void,根据报错信息。
  • @ChrisMartin 看代码。
  • 我认为它与this有关,但我不完全确定。
  • 我应该在哪里定义它?
  • 我猜编译器和我错了,因为您似乎已经有了。你能让代码示例更完整吗(应该编译的整个文件,并指定依赖项和 scala 版本)?

标签: scala jnetpcap


【解决方案1】:

以下代码似乎适用于 scala-2.10.4jnetpcap-1.3.0,这意味着我没有看到问题中报告的任何此类编译时错误:

import org.jnetpcap.packet.PcapPacketHandler
import org.jnetpcap.packet.PcapPacket

object JPCapExample {

  class KeyedMessage[K, V](k: K, v: V) {
    override def toString() = s"$k -> $v"
  }

  class Producer[K, V] {
    def send(data: KeyedMessage[K, V]) = {}
  }

  def main(args: Array[String]) {
    val producer = new Producer[String, PcapPacket]
    val topic = "SomeTopic"
    val jpacketHandler = new PcapPacketHandler[String] {
      def nextPacket(packet: PcapPacket, user: String) {
        val data = new KeyedMessage[String, PcapPacket](topic.toString, packet)
        println(data)
        producer.send(data)
      }
    }
  }

}

使用了哪个版本的 jnetpcap 和 Scala?

【讨论】:

  • 这如何回答上面提出的问题?您确定问题是由于不正确的jnetpcap 版本引起的吗?
  • 没有。我不认为它的版本问题。
  • @NorbertRadyk:绝对不确定。但是,我没有看到任何编译错误。
猜你喜欢
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2010-11-21
  • 2016-01-23
  • 1970-01-01
  • 2016-06-16
  • 2019-12-24
  • 2023-03-07
相关资源
最近更新 更多