我正在爲scala項目使用java線性代數庫(ojalgo 32.0),並且遇到了 奇怪的問題。我使用的每個ojalgo方法都可以正常工作(例如,矩陣 和元素方式乘法,逆和隨機矩陣 世代),除了兩個看起來很簡單的方法用於獲取矩陣尺寸。我從來沒有任何調用java庫的任何 麻煩,我很好奇 發生了什麼事情。下面是一些示例代碼在Java中,工作正常:從scala調用java時java.lang.IllegalAccessError - solutions/workarounds?
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());
}
簡單的翻譯到斯卡拉(使用版本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訪問錯誤問題,但我仍不確定問題的原因或最簡潔的解決方法。
感謝您的解決方法!我希望我知道潛在的問題可能是什麼,但這肯定會回答我的問題。 – Chris