zoukankan      html  css  js  c++  java
  • 一些关于linux 下的jni下问题

    编译的细节我就不写了,主要写一些linux下的注意事项,mask一下错误(太多windows的例子了)

    编译教程:http://www.cnblogs.com/youxilua/archive/2011/09/16/2178554.html


    注意事项:

    1、编译.class文件,javaer都会的事情

    用javah去编译xxxx.h文件这个是注意事项,javah 包名(例:com.ansion.jni).类 

    例子:src$ javah com.ansion.jni.myjni  

    然后你ls一下就会看见你的 myjni.h


    2、在windows下是吧xxx.h编译成xxx.dll

    在linux下比较复杂,先吧 xxx.h-->xxx.o--->xxx.so(我们用的就是so)

    1)得到xxx.o指令

     gcc -fPIC  -D_REENTRANT -I  %JAVA_HOME%/include/  -I  %JAVA_HOME%/include/linux/ -c  jni.c 

    指令例子

     gcc -fPIC  -D_REENTRANT -I  /home/ansionchen/workspace/java-7-sun/include/  -I /home/ansionchen/workspace/java-7-sun/include/linux/ -c  jni.c 

    这样就得到 xxx.o


    2)指令xxx.so指令

    gcc -shared 要转的o文件 -o 目标so的path名字

    指令例子:

    gcc -shared jni.o -o libjni.so


    3、得到一个so文件你现在发现会出现这样的错误

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no ji in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1087)
    at com.ansion.jni.jni.<clinit>(jni.java:15)


    然后网上很多说修改什么LD_LIBRARY_PATH,java -d什么path的,感觉都没有用,加上做项目的话每次改path都会造成不少影响,如果开机启动那就更加麻烦了


    但是细心的人就会发现eclipse可以设置

    见下图



  • 相关阅读:
    New Year and Domino 二维前缀和
    java课堂作业(三)
    java课堂作业(二)
    java课堂作业(一)
    java听课笔记(四)
    java听课笔记(三)
    java听课笔记(二)
    java听课笔记(一)
    java零碎
    java继承中的构造方法
  • 原文地址:https://www.cnblogs.com/riskyer/p/3271483.html
Copyright © 2011-2022 走看看