scala プロジェクトに Java 線形代数ライブラリ (ojalgo 32.0) を使用していますが、奇妙な問題に遭遇しました。私が使用したすべての ojalgo メソッド (たとえば、行列および要素ごとの乗算、逆行列、およびランダム行列の生成) は、行列の次元を取得するための 2 つの一見単純なものを除いて、正常に機能します。これまで 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 のアクセス エラーに関する既知の問題がいくつかあることがわかりますが、問題の原因や最もクリーンな回避策が何であるかはまだわかりません。