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.
我正在使用斯坦福的主题建模工具包
这是一个简单的 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.