java - Intellij IDEA Java 项目和 JNI

标签 java intellij-idea java-native-interface

在 Intellij IDEA 创建的纯 Java 项目是否可以使用 .so 文件(就像 Android 项目一样)?

网上冲浪我找不到任何相关信息。听起来很奇怪。

更新:

我在 Android 中拥有的是一个简单的脚本:

def ndkBuild;
def ndkBuildingDir = mainSrcDir;
def hasNdk = false;
if (System.env.ANDROID_NDK_HOME != null) {
    hasNdk = true;
    ndkBuild = new File(System.env.ANDROID_NDK_HOME, ndkBuildFilename())
}

commandLine ndkBuild, "--directory", ndkBuildingDir, "APP_BUILD_SCRIPT=${ndkBuildingDir}/native/Android.mk", "NDK_APPLICATION_MK=${ndkBuildingDir}/native/Application.mk"

而且我找不到任何在 Java 项目中执行此类操作的文档。

最佳答案

简而言之,是的。

但是,它将不再是一个纯 Java 项目,并将引入对编译/编写 native 二进制文件的系统的依赖。

为此,请编写 JNi 代码,就像在 Android 上所做的那样(您似乎对此很熟悉),使用某些编译器标志编译成动态库,然后使用 System.loadLibrary("foo");在您的 Java 代码中,就像在 Android 项目中一样。

其实还有很多东西,而且有很多 tutorials网上描述了如何做到这一点。我建议在选择 JNI 之前先尝试用 Java 解决问题,因为 JNI 中有很多地方会出错并导致严重的错误。

虽然我从未在 IDEA 中编写过任何 JNI 代码,但我确信这是可能的,但它并不是真正的 C 或 C++ IDE,因此您可能想在该部分使用其他代码。

关于java - Intellij IDEA Java 项目和 JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20837981/

相关文章:

java - 如何在构造函数上使用 @Autowired DI Autowiring 未定义 bean 的属性?

java - 在 Neo4j 嵌入式 java 中通过 ID 获取节点或关系

java - Jython PyList 映射到 List<String> 以及其他 Jython 到 Java 变量映射

Java app通过JNI调用C++ DLL;如何最好地分配内存?

java - jni 回调中的黑色 Sprite

java:符号查找错误: undefined symbol :_ZN2cv6String8allocateEm

java - 翻转阵列部分

java - 如何查看 IntelliJ IDEA 用于编译我的代码的 javac 命令?

intellij-idea - 如何在 IntelliJ 中删除旧的/关闭的任务

java - 我如何逐步查看 jetty 的源代码以查看它如何处理典型的 servlet 请求?