Я пытаюсь заставить метод Java работать через J / Link от Mathematica. Проблема в том, что метод вызывает JNI (файл .dll). За пределами Mathematica из командной строки все прекрасно работает. Но вызывая метод в Mathematica, JVM возвращает следующее:
Java::excptn: A Java exception occurred: java.lang.UnsatisfiedLinkError: ncsa.hdf.hdf5lib.H5.H5Fcreate(Ljava/lang/String;III)I
at ncsa.hdf.hdf5lib.H5.H5Fcreate(Native Method)
at ncsa.hdf.object.h5.H5File.createFile(H5File.java:920)
at H5FileCreateFromMathematica.H5FileCreate(H5FileCreateFromMathematica.java:38).
Я потратил много времени, пытаясь все сделать правильно с помощью classpath и path в различных перестановках. Это все еще может быть проблема, хотя я чувствую, что я упорно трудился, чтобы исключить эти возможности.
Любое понимание (1), что означает это сообщение с Java, и даже лучше (2), как его исправить, будет очень цениться.
- РЕДАКТИРОВАТЬ: ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ после реализации очень полезного предложения Артефакто *
Результатом ввода Артефакто является изменение сообщения об ошибке. При первом вызове fileFormat @ create ["C: \ Test"] выдает:
Java::excptn: A Java exception occurred: java.lang.UnsatisfiedLinkError: Native Library C:\MyJava\hdf-java\lib\win\jhdf5.dll already loaded in another classloader
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1772)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at ncsa.hdf.hdf5lib.H5.<clinit>(H5.java:232)
at ncsa.hdf.object.h5.H5File.createFile(H5File.java:920)
at ncsa.hdf.object.FileFormat.create(FileFormat.java:1472).
Повторный вызов сразу, fileFormat @ create ["C: \ Test"] выдает:
Java::excptn: A Java exception occurred: java.lang.NoClassDefFoundError: Could not initialize class ncsa.hdf.hdf5lib.H5
at ncsa.hdf.object.h5.H5File.createFile(H5File.java:920)
at ncsa.hdf.object.FileFormat.create(FileFormat.java:1472).
Любая помощь в интерпретации этих изменений и что это может означать для того, чтобы заставить это работать в Mathematica?