Прошло много времени с тех пор, как я делал это, но проблема довольно проста, хотя ее нелегко найти.В тестовых подпрограммах вы можете найти важную строку:
System.loadLibrary("plasma_java");
val plasmaClient = new PlasmaClient("/tmp/plasma","",0);
Общая библиотека libplasma_java.so
создается при компиляции расширения C ++ в CMake с параметром -DARROW_PLASMA_JAVA_CLIENT=on
.В файле arrow/java/plasma/test.sh
вы можете найти всю команду сборки, но она является производной от этого файла:
cd arrow/cpp
mkdir release
cd release
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS="-g -O3" \
-DCMAKE_CXX_FLAGS="-g -O3" \
-DARROW_BUILD_TESTS=off \
-DARROW_HDFS=on \
-DARROW_BOOST_USE_SHARED=on \
-DARROW_PYTHON=on \
-DARROW_PLASMA=on \
-DPLASMA_PYTHON=on \
-DARROW_JEMALLOC=off \
-DARROW_WITH_BROTLI=off \
-DARROW_WITH_LZ4=off \
-DARROW_WITH_ZLIB=off \
-DARROW_WITH_ZSTD=off \
-DARROW_PLASMA_JAVA_CLIENT=on \
..
make VERBOSE=1 -j4
make install
Я только что запустил ее, и она построила все по желанию.Если вы хотите установить его куда-нибудь, просто добавьте префикс -DCMAKE_INSTALL_PREFIX=/home/myuser/install-here
.
Если вы запустите System.loadLibrary("plasma_java")
, он будет работать только в том случае, если .so
можно найти где-то в вашей системе (такие вещи обычно указываются в Linuxпеременной среды LD_LIBRARY_PATH
).Обратите внимание, что это также требует libplasma.so
и libarrow.so
в системном пути.