- 博客(36)
- 资源 (5)
- 收藏
- 关注
转载 Unable to execute dex: Java heap space 解决方案(如何为eclipse.int 添加内存)
今天,在编译一个大工程的时候遇到了问题 Unable to execute dex: Java heap space 上网找了一下,有两种解决方案: 1. eclipse.int 添加内存 2. 导入工程的jar通过add User Library方式导入 右键工程->build path->add Library->user
2012-04-27 10:32:52 393
原创 java枚举
一直以来,区分java和c的时候,总是会提到,java里面没有枚举的概念,久而久之,这就成了事实。现在虽然java里面有了枚举,但是一直很抵触java枚举的使用。还是从思想上觉得java没有枚举类型。用之前的方法,整形常量集,这个不好限制范围。这个确实是个弊病。并且不好将使用之处和这个整形常量集联系起来
2012-04-26 08:59:14 252
原创 jni生成h文件
在frameworks/base写完一个模块后,要写一个新模块的时候,发现怎么javah,怎么javac,都不会用了,当时是怎么编译的?新建模块名称test,package android.aa.bb;文件放在frameworks/base/test/java/android/aa/bb下1、在frameworks/base 路径下执行mm,在新增的模块里面,没有相应的java对应cl
2012-04-25 16:15:53 638 1
原创 c回调数据给java实现
1、测试方法1 在jni的java层,创建一个要传回的对象,并记录在全局变量里面。在c回调里面获取这个对象,并修改值。void callback(){ JNIEnv *env=NULL; pVm->AttachCurrentThread(&env,NULL);
2012-04-19 13:24:20 790
原创 jni c本地代码回调java (多线程中,创建java对象时报空指针)未解决
需求:在c回调函数里面,创建一个java对象,并将值传递给java应用使用。void callback(){ JNIEnv *env=NULL; jobject searchResultObj; pVm->AttachCurrentThread(&env,NULL);
2012-04-18 13:41:38 2049 1
转载 chap 20:使用 Java Native Interface 的最佳实践2
2.正确性缺陷5 大 JNI正确性缺陷包括:· 使用错误的JNIEnv· 未检测异常· 未检测返回值· 未正确使用数组方法· 未正确使用全局引用2.1使用错误的JNIEnv执行本机代码的线程使用JNIEnv发起 JNI方法调用。但是,JNIEnv并不是仅仅用于分派所请求的方法。JNI规范规定每个JNIEnv对于线程来说都是本地的。JVM可以依赖于这一假
2012-04-16 08:48:19 424
转载 chap 20:使用 Java Native Interface 的最佳实践
JNI 的发展JNI 自从 JDK 1.1 发行版以来一直是 Java 平台的一部分,并且在 JDK 1.2 发行版中得到了扩展。JDK 1.0 发行版包含一个早期的本机方法接口,但是未明确分隔本机代码和Java 代码。在这个接口中,本机代码可以直接进入 JVM 结构,因此无法跨 JVM 实现、平台或者甚至各种 JDK 版本进行移植。使用 JDK 1.0 模型升级含有大量本机代码的应用
2012-04-16 08:48:03 331
转载 chap 20:使用 Java Native Interface 的最佳实践
JNI 的发展JNI 自从 JDK 1.1发行版以来一直是 Java平台的一部分,并且在 JDK 1.2发行版中得到了扩展。JDK 1.0发行版包含一个早期的本机方法接口,但是未明确分隔本机代码和 Java代码。在这个接口中,本机代码可以直接进入 JVM结构,因此无法跨 JVM实现、平台或者甚至各种 JDK版本进行移植。使用 JDK 1.0模型升级含有大量本机代码的应用程序,以及开
2012-04-16 08:47:49 422
转载 chap 19:JNI限制(多线程)
JNI限制:There are certain constraints that you must keep in mind when writing nativemethods that are to run in a multithreaded environment. By understanding and programming within these constraints, y
2012-04-16 08:47:40 1009
转载 chap 18:JNI在多线程中的应用
引文地址:http://blog.csdn.net/hust_liuX/archive/2006/12/25/1460486.aspx我在这里将文章整理了一下,重新修改了部分描述和增加了一些重要的说明事项。修改文如下:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回,同时把JNI接口的指针JNIEnv *env(虚拟
2012-04-16 08:47:30 560
转载 chap 17:当JNI遇到多线程--java对象如何被C++中的多个线程访问?
java中要访问C++代码时,使用JNI是唯一选择.然而,在多线程的情况下,可能出现以下问题:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回.同时把JNI接口的指针JNIEnv *env,和jobject obj保存在DLL中的变量里.一段时间后,DLL中的消息接收线程接收到服务器发来的消息,并试图通过保存过的en
2012-04-16 08:47:19 1406
转载 Chap16:JNI的c代码中,另外一个线程获取 JNIEnv
JNI 中,JNIEnv*指针变量只对当前线程有效。如果是其他的线程,需要先获得 JVM*指针,然后再获得当前线程的JNIEnv*指针。部分示例代码为:/** Invoker.cpp, Invoker.java */#include #include #include "Invoker.h"#include "invoker_include.h"JavaVM *
2012-04-16 08:47:09 1110
转载 Chap15:基本JNI调用技术(c/c++与java互调)
一.C/C++调用Java在C/C++中调用Java的方法一般分为五个步骤:初始化虚拟机、获取类、创建类对象、调用方法和退出虚拟机。1. 初始化虚拟机代码如下: JNIEnv *env; JavaVM *jvm; JavaVMInitArgs vm_args; JavaVMOption options[3]; int res;
2012-04-16 08:46:53 518
转载 Chap14:如何在C/C++中调用Java
Java跨平台的特性使Java越来越受开发人员的欢迎,但也往往会听到不少的抱怨:用Java开发的图形用户窗口界面每次在启动的时候都会跳出一个控制台窗口,这个控制台窗口让本来非常棒的界面失色不少。怎么能够让通过Java开发的GUI程序不弹出Java的控制台窗口呢?其实现在很多流行的开发环境例如JBuilder、Eclipse都是使用纯Java开发的集成环境。这些集成环境启动的时候并不会打开一个命令窗
2012-04-13 12:55:19 491
转载 Chap13:JNI编程系列之高级篇
在本篇中,将会涉及关于JNI编程更深入的话题,包括:在native方法中访问Java类的域和方法,将Java中自定义的类作为参数和返回值传递等等。了解这些内容,将会对JNI编程有更深入的理解,写出的程序也更清晰,易用性更好。1. 在一般的Java类中定义native方法在前两篇的例子中,都是将native方法放在main方法的Java类中,实际上,完全可以在任何类中定义native
2012-04-13 12:05:54 325
转载 Chap12:JNI编程系列之中级篇(上) 本篇将介绍在JNI编程中如何传递参数和返回值。
首先要强调的是,native方法不但可以传递Java的基本类型做参数,还可以传递更复杂的类型,比如String,数组,甚至自定义的类。这一切都可以在jni.h中找到答案。 1. Java基本类型的传递 用过Java的人都知道,Java中的基本类型包括boolean,byte,char,short,int,long,float,double这样几种,如果你用这几种类型做native方
2012-04-13 11:05:52 405
转载 Chap11:JNI编程系列之基础篇
JNI编程系列之基础篇 最近干一个活需要从Java调用C++编译的动态链接库,研究了一下JNI,现在将网上搜罗的文档和自己的体会贡献出来。 JNI的做法是:通过在方法前加上关键字native来识别本地方法,然后用本地语言(如C,C++)来实现该方法,并编译成动态链接库,在Java的类中调用该动态链接库,然后就可以像使用Java自己的方法一样使用native方法了。这样做的好处是既具
2012-04-13 11:04:07 367
转载 Chap10:在 Windows 中实现 Java 本地方法
本文为在 32位 Windows 平台上实现 Java 本地方法提供了实用的示例、步骤和准则。这些示例包括传递和返回常用的数据类型。本文中的示例使用 Sun Microsystems公司创建的 JavaDevelopmentKit (JDK)版本 1.1.6 和 Java本地接口 (JNI)规范。用 C语言编写的本地代码是用 MicrosoftVisualC++编译器编译生成的。简介本
2012-04-13 11:02:00 356
转载 Chap9:如何编写jni方法(转载)
一、概述:在这篇文章中将会简单介绍如何编制一些简单的JNI 方法。我们都知道JNI方法可以帮助我们调用用C/c++编写的函数,这样如果一项工作已经用C /c++语言实现的话,我们就可以不用花很大的力气再用JAVA语言对这一工作进行再实现,只要编制相应的JNI函数,就可以轻松实现JAVA语言对C /c++函数的调用,从而大大减轻程序开发人员的工作量。 在这个项目中,我
2012-04-13 10:51:41 390
转载 Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
JAVA的跨平台的特性深受java程序员们的喜爱,但正是由于它为了实现跨平台的目的,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能,比如与一些硬件设备通信,往往要花费很大的精力去设计流程编写代码去管理设备端口,而且有一些设备厂商提供的硬件接口已经经过一定的封装和处理,不能直接使用java程序通过端口和设备通信,这种情况下就得考虑使用java程序去调用比较擅长同系统打交道的第三方程序,从
2012-04-13 10:23:55 1059
转载 Chap8:如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组
近遇到一个问题,请各位帮忙解决下: 如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组?BYTE为unsigned char类型 这两个我理解应该是相同的吧,强制类型转换好像不启作用,应该如何转换呢?该问题已经关闭:问题已解决,之前代码有问题 jbyte * arrayBody= env->GetByteArrayElem
2012-04-13 10:22:45 998
转载 Chap7:Jni中C++和Java的参数传递
如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章: 利用VC++6.0实现JNI的最简单的例子>入门教程之HelloWorld篇>这些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实际的使用过程中,往往需要对参数进行处理转换。才可以被C/C++程序识别。比
2012-04-13 10:20:42 416
转载 Chap6: JNI传递返回值
作为主调方的Java源程序TestJNI.java如下。代码清单15-4在Linux平台上调用C函数的例程——TestJNI.java1. public class TestJNI2. {3. static4. {5. System.loadLibrary("testjni");//载入静态库,t
2012-04-13 09:43:21 536
转载 Chap5:jni教程
本教程摘自IBM DW,如有转载,请声明!Java 本机接口(Java Native Interface (JNI))是一个本机编程接口,它是 Java 软件开发工具箱(Java SoftwareDevelopment Kit (SDK))的一部分。 JNI 允许 Java代码使用以其它语言(譬如 C和 C++)编写的代码和代码库。Invocation API(JNI
2012-04-13 09:38:40 556
转载 Chap 4:用javah产生一个.h文件
Java不是完善的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接造访到操作体系底层(如系统硬件等),为此 Java使用native法子来扩大Java程序的功效。 可以将native法子比作Java程序同C程序的接口,其实现步骤: 1、在Java中声明native()方式,然后编译; 2、用javah发生一个.h文件; 3、写一个
2012-04-13 09:34:40 345
转载 Chap 3:javah命令帮助信息
D:\Program Files\Java\jdk1.6.0_12\bin>javah用法:javah [选项] 类> 其中 [选项]包括: -help 输出此帮助消息并退出 -classpath 路径> 用于装入类的路径 -bootclasspath 路径>用于装入引导类的路径
2012-04-13 09:32:47 275
转载 Jni函数调用Chap2:JNI-百度百科
定义JNI是Java NativeInterface的缩写,中文为JAVA本地调用。从Java1.1开始,Java NativeInterface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 使用java与本地已编译的代
2012-04-13 09:31:16 357
转载 Jni函数调用 Chap1:JNI完全手册
Chap1:JNI完全手册 最近在公司里做了一个手机的项目,需要JAVA程序在发送短信的时候和第三方的短信服务器连接。短信接口是用C++写的。琢磨了三天,大致搞懂了JNI的主体部分。先将心得整理,希望各位朋友少走弯路。 首先引用一篇文章,介绍一个简单的JNI的调用的过程。JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少
2012-04-13 09:22:40 328
原创 如何在jni中维护一个java对象
GlobalRef: 当你需要在 JNI 层维护一个 Java 对象的引用,而避免该对象被垃圾回收时, 使用 NewGlobalRef 告诉VM 不要回收此对象,当本地代码最终结束该对象的引用时,用 DeleteGlobalRef 释放之。
2012-04-12 16:13:03 502 1
原创 jni如何通过回调传对象
实现接口把对象当做接口的参数public interface callback{public abstract int getObject(testObj obj);}对象类:public class testObj{ int a;int b;testObj(int a,int b){this.a=a;this.b=b;}}c实现
2012-04-12 15:48:32 740
转载 深入浅出jni
Java虚拟机(Java Virtual Machine) 简称JVM Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM的设计目标是提供一个基于抽象规格描述的计算机模型, JVM对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码(Bytecode)的格式给出了
2012-04-12 13:54:27 1366
转载 JNI 常用API
JNI 常用API 利用JNIEnv自变量,程序员可访问一系列函数。这些函数可划分为下述类别:■获取版本信息■进行类和对象操作■控制对Java对象的全局和局部引用■访问实例字段和静态字段■调用实例方法和静态方法■执行字串和数组操作■产生和控制Java异常 获取版本信息jint GetVersion(JN
2012-04-12 13:29:37 731
转载 jni和c/c++多线程的处理
http://reeboo.iteye.com/blog/346642java中要访问C++代码时, 使用JNI是唯一选择. 然而,在多线程的情况下, 可能出现以下问题:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回.同时把JNI接口的指针JNIEnv *env,和jobject obj保存在DLL中的
2012-04-12 13:16:27 457
原创 关于jni里面回调的使用
将已经实现的驱动移植到android平台后,需要将通过jni将接口封装。在这个过程中,有的c语言接口是通过回调的方式回传数据的。相当于java是被动调用的。开始的时候,想着使用intent 广播实现,后来想想不对,这是java层的东西,不适用于jni的封装。后来使用interface,接口实现了jni层的回调的封装。public interface testCallBack{pub
2012-04-12 12:15:33 518
转载 java interface使用说明
l 在interface中所有的方法都是public abstract的,即使你没有申明它是public abstract的. l 在interface中所有的数据成员都是public static final的,即使你没有申明.但不能是blank final 在编译时候确定的 在Java中,interface的地位和class是一样的 实现int
2012-04-12 10:52:20 358
Effective.STL中文.CHM
2009-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人