Java Linux终端编译项目不';行不通

Java Linux终端编译项目不';行不通,java,c,linux,java-native-interface,Java,C,Linux,Java Native Interface,我有一个Compile.sh文件。 这个很有魅力: 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.p

我有一个
Compile.sh
文件。
这个很有魅力:

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
我的问题是我不想将我的源代码放在bin文件夹中。
我想把它们放在一个单独的文件夹中。
因此,我的脚本如下所示:

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

我不知道为什么这个坏了。我也不例外,但程序也不能正常工作。您知道如何修复它吗?

工作脚本有:

cd bin
gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c
另一个版本有:

cd data
gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c -lc
因此
SharedTable.c
必须位于
bin
目录中,而
gcc
命令无法找到它,因为它不再位于当前目录中。尝试 改为使用相对路径:

gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ ../bin/SharedTable.c -lc

在这两种情况下是否都创建了“libspeiler.so”?或者,什么是编译器错误?您使用什么代码加载。那么?没有错误。。C项目应该从txt文件中读取。如果我把源代码放在bin文件夹中,它就会工作,如果我把它们放在一个单独的文件夹中,那么表将是空的,而不需要通过调试器更改代码步骤,并查看新版本的错误。。我的第一个猜测是,一个相对文件路径现在不知何故被破坏了。使用
make
而不是脚本?