简单的scala程序给出错误:java。lang.CompatibleClassChangeError
我正在使用斯坦福大学的主题建模工具包
这是一个在eclipse上运行的简单scala程序
为什么我总是收到这个错误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.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.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)
# 1 楼答案
提供的代码是正确的。。。问题(很可能)是Scala版本的问题。jar是用Scala 2.8(5年前)编译的,引用自http://nlp.stanford.edu/software/tmt/tmt-0.4/:
这里描述的What causes java.lang.IncompatibleClassChangeError?是由于二进制不兼容造成的。因此,唯一的选择是安装旧版本的Scala,最好是2.8.0