gpt4 book ai didi

java - 生成 Java JNI header

转载 作者:搜寻专家 更新时间:2023-11-01 01:01:14 27 4
gpt4 key购买 nike

我想做的就是使用 JDK Javah.exe 程序生成一个 JNI 头文件,但无论我尝试什么,我都会不断收到错误消息“错误:找不到 ddg.ndkTest.NativeLib 的类文件'"(其中 ddg.ndkTest 是命名空间,NativeLib 是 java 类文件)。此外,请注意,为了进一步简化流程,我已将整个 Android 项目复制到 Java 目录。

我尝试了以下命令,但均无效:

  • javah -jni ddg.ndkTest.NativeLib
  • javah -verbose -jni -classpath\NDKTest\bin\classes ddg.ndkTest.NativeLib
  • C:\Program Files\Java\jdk1.7.0_02\bin>javah.exe -jni -classpath\NDKTest\bin\classes\ddg.ndkTest.NativeLib

如果调用我的包; “ddg.ndkTest”,我的类(class)是; “NativeLib.java”,我上面的类路径是正确的。我应该在我的命令窗口中写什么?

最佳答案

Java 更新 >= Java9

Java9 以来,命令 javah 已被标记为 deprecation warning 并且从 Java10 开始,它已被从 JDK 中删除,因为它的功能现在包含在 javac 命令中。

因此,为了从 Java9 执行同样的操作,您应该运行:javac -h 。 NativeLib.java

请注意,我假设您在正确的目录中

除了命令之外的主要区别在于,现在 JNI header 创建的目标是 .java 文件中的源代码,而不是编译后的 .class

-h directorySpecifies where to place generated native header files.

When you specify this option, a native header file is generated for each class that contains native methods or that has one or more constants annotated with the java.lang.annotation.Native annotation. If the class is part of a package, then the compiler puts the native header file in a subdirectory that reflects the package name and creates directories as needed.

https://docs.oracle.com/en/java/javase/11/tools/javac.html#GUID-AEEC9F07-CB49-4E96-8BC7-BCC2C7F725C9

关于java - 生成 Java JNI header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312976/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com