simple scala program gives Error: java.lang.IncompatibleClassChangeError

simple scala program gives Error: java.lang.IncompatibleClassChangeError

我正在使用斯坦福的主题建模工具包

这是一个简单的 scala 程序 运行 on eclipse

为什么我总是收到这个错误Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class

import scalanlp.io._;

object Main {
  def main(args: Array[String]) {

    println("added value"+c);

    val pubmed = CSVFile("pubmed-oa-subset.csv");

    println("Success: " + pubmed.data.size + " records");


  }
}

此处完全错误

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access0(URLClassLoader.java:71)
    at java.net.URLClassLoader.run(URLClassLoader.java:361)
    at java.net.URLClassLoader.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at scalanlp.io.CSVFile$.CSVFileAsParcel(CSVFile.scala:73)
    at Main$.main(t1.scala:27)
    at Main.main(t1.scala)

提供的代码是正确的...问题(很可能)是 Scala 版本问题。该 jar 是用 Scala 2.8(5 年前)编译的,引用自 http://nlp.stanford.edu/software/tmt/tmt-0.4/:

TMT was written during 2009-10 in what is now a quite old version of Scala, using a linear algebra library that is also no longer developed. Some people still use it and find it a friendly piece of software for LDA and Labeled LDA models, and more power to you, but at this point we really can't offer any support or fix any problems. Sorry about that.

此处 What causes java.lang.IncompatibleClassChangeError? 所述的 IncompatibleClassChangeError 是由于二进制不兼容造成的。所以唯一的选择是安装旧版本的 Scala,最好是 2.8.0.