【问题标题】:Where can I find the jni headers for Mac OS我在哪里可以找到 Mac OS 的 jni 标头
【发布时间】:2014-01-13 08:10:03
【问题描述】:

我不是在问我在我自己的计算机上哪里可以找到它,我是在问我在哪里可以找到它。

我已经完成了我的谷歌作业,但我没有在这些路径中找到标题。我的 /System/Library/Java/JavaVirtualMachines/... 中甚至没有 Header 文件夹,而且我的根目录下也没有 Developer 文件夹。

现在我很确定我没有安装这些标头,我查看了 MacOS 开发者网站,但只发现了一些损坏的链接。

OpenJDK 或 SunJDK 不应该在某处为 MacOS 提供 jni.h 标头吗?

【问题讨论】:

标签: java macos java-native-interface


【解决方案1】:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/jni.h

但这取决于您的环境。

【讨论】:

  • 很遗憾,没有 Headers 目录。我完全删除了 JDK 并重新安装,正如你所说的那样。
【解决方案2】:

您可以使用java_home 命令找到正确的位置。请参阅Oracle docs

因此,例如在您的 makefile 中,您可以:

JAVA_HOME:=`/usr/libexec/java_home`
CPPFLAGS:=-I $(JAVA_HOME)/include -I $(JAVA_HOME)/include/darwin

请注意,您还需要将$(JAVA_HOME)/include/darwin 添加到包含路径中,以便它可以找到jni_md.h,这是机器特定的部分,并且包含在jni.h

【讨论】:

    【解决方案3】:
    1. jdk8下载网址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    下载并安装。

    1. 检查java版本:
    sodino:~ sodino$ java -version 
    java version "1.8.0_45" 
    Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
    Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
    

    3.找到'java'原始路径和'java_home':

    sodino:~ sodino$ which java
    /usr/bin/java
    sodino:~ sodino$ ls -n /usr/bin/java
    lrwxr-xr-x  1 0  0  74 Sep 30  2014 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
    sodino:~ sodino$/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home
    /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
    
    1. 获取‘include’文件夹和jni.h

      现在您将在“/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home”中找到一个“include”文件夹, 打开它会找到'jni.h'。

    【讨论】:

      【解决方案4】:

      在 Mac OS X 10.8.5 上,我使用“/System/Library/Frameworks/JavaVM.framework/Headers”,例如:

      HelloJNI.o : HelloJNI.c HelloJNI.h
      gcc -I"/System/Library/Frameworks/JavaVM.framework/Headers" -fpic -c $< -o $@
      

      顺便说一句,我正在使用这个版本的 Java:

      java version "1.6.0_65"
      Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
      Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-09
        • 2017-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        相关资源
        最近更新 更多