为什么我在运行时抛出NoClassDefFoundError,但是在sbt控制台中实例化该类却可以呢?

问题描述

我正在尝试让Processing在Scala和sbt下工作,但遇到一个奇怪的问题。尝试运行以下程序(Main.scala):

import processing.core.PApplet

class ProcessingTest extends PApplet {

  override def setup() {
    size(1024,768)
    background(10)
  }

  override def draw() {

  }
}

object ProcessingTest extends App {
  PApplet.main("ProcessingTest")
}

导致运行时异常:

[error] (Animation Thread) java.lang.NoClassDefFoundError: processing/data/StringList
[error] java.lang.NoClassDefFoundError: processing/data/StringList
[error]     at processing.core.PApplet.insideSettings(PApplet.java:915)
[error]     at processing.core.PApplet.size(PApplet.java:1987)
...

但是,奇怪的是,我能够在sbt控制台会话中创建processing.data.StringList

scala> new processing.data.StringList("foo","bar")
res1: processing.data.StringList = StringList size=2 [ "foo","bar" ]

为什么会这样?可能的相关细节:我正在使用Oracle Java 8,并且我的sbt依赖项如下设置:

val ProcessingVersion = "3.3.7"
libraryDependencies ++= {
  Seq(
    "org.processing" % "core" % ProcessingVersion,"org.processing" % "net" % ProcessingVersion,"org.processing" % "serial" % ProcessingVersion,"org.processing" % "pde" % ProcessingVersion,"org.processing" % "pdf" % ProcessingVersion
  )
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...