有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

简单的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) 个答案

  1. # 1 楼答案

    提供的代码是正确的。。。问题(很可能)是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?是由于二进制不兼容造成的。因此,唯一的选择是安装旧版本的Scala,最好是2.8.0