我遇到了本机函数使用的相对文件路径问题。当我从Java代码调用本机C函数时,由于空文件指针而导致分段错误。唯一有效的方法是将这些路径更改为绝对文件路径,这对我来说不是解决方案。有没有办法为本机函数设置根目录或使用Java项目根文件夹浏览目录,或绝对路径是唯一的方法?
答案 0 :(得分:1)
Java does not have a way to change the working directory。
这是因为the Java developers consider changing the working directory to create more problems than it solves。具体是:
您的C代码需要使用绝对路径。
或者,如果您愿意编写其他C代码,您的C代码可以直接调用操作系统的chdir
函数。这可能很危险,因为JVM不是为这种可能性而设计的。
答案 1 :(得分:0)
我解决了这个问题!解决方案是使用File.getAbsoluteFilePath()函数,并将其传递给本机C函数。它也可以用于查找共享库的绝对路径,使应用程序平台独立。 C代码可以像在绑定Java代码之前一样浏览它的目录。
答案 2 :(得分:-1)
你在Linux工作吗?
在Linux中,您可以添加路径
$LD_LIBRARY_PATH=.so file path
到~/.bashrc
文件,然后重新启动..
如果您使用Windows,则可以将.dll文件放在作为.class文件路径的路径中。