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
而不是脚本?