一些关于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可以设置
见下图

一些关于linux 下的jni下问题的更多相关文章
- Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1
交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...
- Linux(Ubuntu)下安装NodeJs
用以下命令来升级系统,并且安装一些Node.JS必要的包. Linux(Ubuntu)下安装NodeJs 安装nodeJS之前,如果没有安装g++ make libssl-dev等, 1.更新系统和依 ...
- Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)
1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目,我也是依赖于在网上查找的各种资料来配置环境并且部署项目的,而其在网上也已有 ...
- 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子
Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...
- linux复制指定目录下的全部文件到另一个目录中
linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...
- linux在home目录下使用ls命令卡死
linux在home目录下使用ls命令卡死,原因可能是mount的某个服务器挂掉或出啥问题了,这个时候umount掉就正常了,如果umount提示device is busy,这时可以使用强制卸载 ...
- Linux(CentOS 6.5)下配置Mono和Jexus并且部署ASP.NET MVC5
1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目,我也是依赖于在网上查找的各种资料来配置环境并且部署项目的,而其在网上也已有 ...
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- chmod 权限777 是什么意思(Unix和Linux的各种操作系统下)
在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限.例如我用ls -l命令列文件表时,得到如下输出:-rw-r--r-- 1 bu users 2254 ...
随机推荐
- 【集训笔记】计算几何【HDOJ2036【HDOJ1086【HDOJ1115【HDOJ1147【HDOJ1392 【ZOJ2976
改革春风吹满地 Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted ...
- redis(三)redis+Keepalived主从热备秒级切换
一 简介 安装使用centos 5.10 Master 192.168.235.135 Slave 192.168.235.152 Vip 192.168.235.200 编译环境 yum -y in ...
- ZooKeeper原理及配置
ooKeeper实验版本:3.4.6 ZooKeeper下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ zookeeper是一个高可用性,高性 ...
- Android - Mac系统Android程序位置
Mac系统Android程序位置 本文地址: http://blog.csdn.net/caroline_wendy Mac系统是类Unix系统.Android程序直接安装至目录.能够使用" ...
- linux下Python网络编程框架-Twisted安装
Twisted是python下的用来进行网络服务和应用程序编程的框架,安装Twisted前需要系统预先安装有python. 一.安装Twisted http://twistedmatrix.com/R ...
- cocos2d-x游戏开发系列教程-中国象棋06-游戏规则
前情回顾 上一个博文我们提到象棋运动的函数dealWithChess,但是只是说该函数完成了棋子的选择和移动功能 其实在这个函数里,在移动棋子之前,是要对棋子的移动是否合法进行判断的,我们一起来看看如 ...
- ※数据结构※→☆线性表结构(list)☆============单向循环链表结构(list circular single)(四)
循环链表是另一种形式的链式存贮结构.它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环. 单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可. 循环链表的 ...
- Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解
首先,看Android的官方文档正解 onInterceptTouchEvent()与onTouchEvent()的机制: 1. down事件首先会传递到onInterceptTouchEvent() ...
- cocos2d-x环境的搭建之xcode-本人亲历成功搭建!
cocos2d-x环境的搭建之xcode-本人亲历成功搭建! 写给大家的前言,在学习cocos2d-x的时候自己走了很多的弯路,也遇到了很多很多问题,不管是简单的还是困难的现在都慢慢的一步一步克服了, ...
- Python基础入门教程
Python基础入门教程 Python基础教程 Python 简介 Python环境搭建 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循 ...