У меня есть файл Compile.sh
.
Это один работает как шарм:Компиляция проекта в терминале Linux не работает
cd src
javac model/JNIResultSet.java
javah -jni model.JNIResultSet
cp model_JNIResultSet.h ./../bin/
cd ..
cd bin
gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c -lc
java -Djava.library.path=./../bin/ app.Main
Моя проблема заключается в том, что я не хочу, чтобы мои источники в папку бин.
Я хочу, чтобы они были в отдельной папке.
Для этого мой сценарий выглядит как этот:
cd src
javac model/JNIResultSet.java
javah -jni model.JNIResultSet
cp model_JNIResultSet.h ./../data/
cd ..
cd data
gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c -lc
cd ..
cd bin
java -Djava.library.path=./../data/ app.Main
Я не знаю, почему это один не работает. Я не получаю исключения, но программа также работает неправильно. Вы знаете, как это исправить?
Есть ли libspeiler.so в обоих случаях? Или, что такое ошибка компилятора? Какой код вы используете для загрузки .so? – Jamie
Ошибка отсутствует. Проект C следует читать из txt-файла. Если у меня есть источники в папке bin, это работает, если у меня есть их в отдельной папке, таблица пуста, не меняя код – mafioso
, пройдите через отладчик и посмотрите, что будет с ошибкой с новой версией. Мое первое предположение было бы относительный путь к файлу теперь перегружен каким-то образом. – yano