Java JNI接口(interface): Native functions relative file paths

标签 java c java-native-interface

我在使用 native 函数使用的相对文件路径时遇到问题。当我从 Java 代码调用 native C 函数时,由于空文件指针而出现段错误。唯一有效的方法是将这些路径更改为绝对文件路径,这对我来说不是解决方案。有没有办法为 native 函数设置根目录或使用Java项目根文件夹来浏览目录,或者绝对路径是唯一的方法?

最佳答案

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 并不是为这种可能性而设计的。

关于Java JNI接口(interface): Native functions relative file paths,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27698159/

相关文章:

java - Intersystems Caché 与 Java Gateway - 将参数作为 java.io.FileInputStream 传递

c - gcc 编译 c++ 时不带任何标志

c - 嵌套的 for 循环似乎由于某种原因单独执行

java - 如何读取从 Java 传递到 JNI 的对象数组

tomcat - 无法在 tomcat 7 上加载 native C .so 文件

python - 如何在 SAP Logon 中自动执行重复任务

java - 这个@Override for Arrays.sort 在 Java 中如何工作?

android - JNI : properly manage lifetime of a Java object

java - 为什么我必须在 maven 项目中手动为 sql db 定义驱动程序

c++ - Pthread队列系统