【发布时间】:2012-05-24 13:19:17
【问题描述】:
我在 scala 项目中使用了一个 java 线性代数库 (ojalgo 32.0),我遇到了一个 奇怪的问题。我使用的每种 ojalgo 方法都可以正常工作(例如,矩阵 和逐元素乘法、逆矩阵和随机矩阵 代)除了两个看似简单的用于获取矩阵维度的方法。我从来没有 以前调用 java 库时遇到麻烦,我很好奇 这是怎么回事。这是java中的一些示例代码,可以正常工作:
public static void main(String[] arg) {
MatrixFactory tmpFactory = PrimitiveMatrix.FACTORY;
BasicMatrix wMat = tmpFactory.makeRandom(5,5,new Weibull(5.0, 2.0));
System.out.println(wMat.getColDim());
}
对 scala 的简单翻译(使用版本 2.9.2):
object DataGen {
def main(args:Array[String]):Unit = {
val tmpFactory = PrimitiveMatrix.FACTORY
val wMat = tmpFactory.makeRandom(5,5,new Weibull(5.0, 2.0))
println(wMat.getColDim)
}
scala 代码抛出这个:
Exception in thread "main" java.lang.IllegalAccessError: tried to
access class org.ojalgo.access.Structure2D from class DataGen$
at DataGen$.main(DataGen.scala:11)
at DataGen.main(DataGen.scala)
第 11 行是
println(wMat.getColDim).
搜索此错误的其他情况表明 scala 中存在一些与访问错误有关的已知问题,但我仍然不确定问题的原因或最干净的解决方法可能是什么。
【问题讨论】: