JNI开发的简单例子

前言

在有的时候根据项目的需要不可以避免用到本地的东西,最常见的就是java想访问Window本地的东东,比如想调节鼠标移动速度、改变窗体底色、甚至用javaApplet做个基于windows的远程控制象pcanywhere那样,怎么办?下面就用个最简单的例子来入门。

步骤

写一个HelloWorld.java

class HelloWorld
{
  public native void displayHelloWorld();
  //定义本地方法
  static
  {
   System.loadLibrary("hello");
   //调入本地库
  }
  public static void main(String[] args)
  {
   new HelloWorld().displayHelloWorld();
  }
}

以上代码看起来好象和以前写的有点区别,出现了native关键字,但是不用太深究,你可以把这段代码看成是调用本地库的桥。

然后java HelloWorld.java生成HelloWorld.class

生成C的头文件

很简单,就用jdk提供的javah命令, javah HelloWorld.class(注意,如果运行出错就把classpath指向class)成功运行后会出现HelloWorld.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject);
#ifdef __cplusplus}
#endif
#endif

时间: 2024-11-08 19:33:00

JNI开发的简单例子的相关文章

Spring 2.5标注开发的简单例子

研究了很久新出的 Spring 2.5, 总算大致明白了如何用标注定义 Bean, 但是如何定义和注入类型为 java.lang.String 的 bean 仍然未解决, 希望得到高人帮助. 总的来看 Java EE 5 的标注开发方式开来是得到了大家的认可了. @Service 相当于定义 bean, 自动根据 bean 的类名生成一个首字母小写的 bean @Autowired 则是自动注入依赖的类, 它会在类路径中找成员对应的类/接口的实现类, 如果找到多个, 需要用 @Qualifier

微信公众平台的开发接口简单例子

这段时间都在忙于微信公众号平台来发,现在已经接近尾声了,所以对于微信开发平台的接口如何使用,在这里也唠刀一两句. 微信平台的开发并不像你想像的那么难,无非就是数据的存取处理罢了.对于数据的存取,简单如留言板,存数据,我们通过表单向数据库提交数据以存入;取数据,通过查询语句从数据库取得.对于数据的存取,微信公众平台开放了各式各样的接口以满足不同类型的数据存取,这样,我们就可以通过接口间接地向微信公众平台的数据库存取数据了. 先来看一个创建菜单的接口  https://api.weixin.qq.c

Ubuntu 使用Jni开发实例详解_java

1. 编写Java文件,在其中声明native方法, 并通过static 语句块加载动态链接库,示例Prompt.java代码如下: class Prompt { private native String getLine(String prompt); public static void main(String args[]) { Prompt p = new Prompt(); String input = p.getLine("Type a line: "); System.o

数据库访问简单实现---edainfo-model(三)——简单例子

model|访问|数据|数据库 下面就正式来讲一下开发步骤:首先,在Tomcat5.X下建一个jdbc/edainfo的数据源,数据库可以是oracle.sql server.mysql.表的结构如下:CREATE TABLE example (id varchar(13) NOT NULL ,name varchar(50) NULL ,address varchar(50) NULL ) ON [PRIMARY]其中,id为主键.datasource.xml内容如下:<?xml versio

使用C#开发一个简单的P2P应用

p2p 本篇文章讨论了一种设计P2P网络应用程序的简单方法. 尽管有许多P2P网络不需要索引服务器或中央服务器,各客户机之间可以互相直接通讯,但下面的图1还是显示了P2P网络的基本工作原理,一般来说,P2P概念中包含一台中央索引服务器,这台服务器并不存储有任何文件,它只存储有登录到该网络上的所有用户的信息.客户端的IP地址以及用户提供的供共享的文件,客户机和服务器使用简单的命令通过报路连接进行通讯. 当客户端A想要查找P2P网络上其他客户端提供共享的文件时,系统会执行下面的操作: ·客户端A以自

WML的简单例子及编辑、测试方法第1/2页_WML教程

                        完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行调试.从本章开始我们将系统地学习WML语言,本章主要讲解WML语言的基础知识,下一章全面讲解WML的语法.标签和规则. 2.1 WML的简单例子及编辑.测试方法 无限标记语言WML(Wireless Markup Language)是一种基于扩展标记语言XML(Extension Markup Language)的语言

HTML5 Canvas开发迷宫游戏例子

本文介绍如何使用Canvas画布制作一个简单的迷宫游戏:用户按下方向键时,笑脸图标会沿相应的方向移动(移动时有动画效果),遇到墙壁时(碰撞检测)就会停下来. 1,在线样例加载困难迷宫 加载简单迷宫 开发迷宫游戏例子-html5 canvas绘图例子"> 2,实现原理(1)迷宫的生成:我们这里是使用一幅迷宫图片,然后把整幅图绘制到画布上. (2)通过设置 window.onkeydown 的响应函数 processKey(),当用户按下方向键的时候,根据键码调整笑脸各方向上的速度. (3)d

《第三方JavaScript编程》——1.3 开发一个简单的微件

1.3 开发一个简单的微件 在本章前两小节中我们探讨了一些第三方JavaScript的流行用法.你已经了解了在开发微件.数据收集.作为客户端Web服务的API封装等方面是如何运用到它的.希望这能够给你一些启发,当你设计自己的第三方应用程序时候能够了解哪些功能是能够实现的. 现在,你已经看过了一些现实中的实例,是时候开发一些自己的东西了.让我们先从相对简单的入手:一个极其简单的嵌入式微件. 假设你在运行一个提供当地最新天气信息的网站.一般而言,用户直接访问你的网站是为了获得最新的天气消息.但是为了

如何开发一个简单的HTML5 Canvas 小游戏

原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wizard's Lizard这个游戏的半数以上开发是由我完成的) 我们直接来看源码里的game.js,当然你也可以在线体验一下游戏先. 游戏截图 创建画布 // Create the canvas var canvas = document.createElement("canvas"); v