我正在使用stanford的主题建模工具包
这是一个在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)
答案 0 :(得分:1)
提供的代码是正确的......问题是(最有可能)Scala版本问题。该jar是使用Scala 2.8(5年前)编译的,引自http://nlp.stanford.edu/software/tmt/tmt-0.4/:
TMT是在2009-10期间写成的,现在是一个相当古老的版本 Scala,使用的线性代数库也不再存在 发达。有些人仍然使用它,并发现它是友好的一块 适用于LDA和Labeled LDA模型的软件,以及更多功能,但在 这一点,我们真的无法提供任何支持或解决任何问题。 对不起。
此处What causes java.lang.IncompatibleClassChangeError?所述的IncompatibleClassChangeError
是由于二进制不兼容造成的。所以唯一的选择是安装旧版本的Scala,最好是2.8.0。