这问题我提前还真遇到过,但是忘记怎么解决的了,我是按一个教程的方法做的,你可以在网上找,找不到就把邮件留这,我发你就是,按那个例子是能成功的,我在sun上用的,windows我没试。我同事试过也是成功的
解决方案 »
- 急求 用JAVA实现的一些经典的字符串处理算法
- 大侠帮忙!帮忙纠错!!!!急啊!!!
- 新手上路,请教一个比较基本的问题
- 请帮我看看这道笔试题吧。
- 国际化如何解决?
- 高手请帮忙,关于Interbase中中文的问题,高分相送!
- 迷茫:没有实际的项目可做,该如何学习呢?我知道大虾们回答这种问题都腻了!但是小弟真的很迷茫,请大家一定进来看看 !!
- 为什么我的问题最多只能给100分?
- 在JBUILDER6中开发出的JAVA APPLET为何在IE中无法显示,为什么只有灰色前景?请各位帮助!
- SMTP 发信通过验证了,可没有发出信怎么回事?附程序 谢谢!!!
- java怎么调用操作系统?比如能不能调用windows API?loadLibrary和load两个方法怎么调用动态库?谁能提供示例?谢谢
- JAVA新手 进程问题
在本实例中,包括下面几个类:
HelloNative.java:实用类,提供一个静态本地方法greeting(),打印出一个消息串。其中greeting方法调用了下面的本地代码。
HelloNative.c:本地实现代码。
HelloNativeTest.java:应用主文件,调用HelloNative实用类的greeting()方法。//:HelloNative.java
class HelloNative {
public native static void greeting();
static {
//HelloNative是下面将由HelloNative.c生成的dll文件。
System.loadLibrary("HelloNative");
}
};编译上面的.java文件后,在生成的.class目录下,使用javah命令生成HelloNative.class的C头文件:
javah HelloNative 生成的HelloNative.h文件如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: greeting
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_greeting
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif拷贝生成的HelloNative.h,另存为HelloNative.c,并填充JNICALL Java_HelloNative_greeting方法体,得到下面的HelloNative.c文件
//HelloNative.c
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: greeting
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_greeting (JNIEnv * env, jclass cl){
printf("Hello, Native World!\n");
}
#ifdef __cplusplus
}
#endif
#endif使用Windows自带的c/c++编译器,编译上面的HelloNative.c:cl -Id:\j2sdk1.4.1\include -Id:\j2sdk1.4.1\include\win32 -LD HelloNative.c -FeHelloNative.dll执行这条命令后将生成HelloNative.dll文件。这个DLL动态链接库就是下面我们在HelloNative.java文件中调用的本地文件。如果是在Unix/Linux下,请使用相应操作系统的c编译器,生成的库文件是HelloNative.so。(这里jdk的安装路径为d:\j2sdk1.4.1)至此,Windows平台上的本地库文件和Java文件已经准备就绪,下面写一个简单的测试程序来测试一下本地调用吧。
//: HelloNativeTest.java
class HelloNativeTest {
public static void main(String[] args) {
HelloNative.greeting();
}
}
编译、运行这个程序,将打印出Native版的:
Hello, Native World!
使用Windows自带的c/c++编译器,编译上面的HelloNative.c:
cl -Id:\j2sdk1.4.1\include -Id:\j2sdk1.4.1\include\win32 -LD HelloNative.c -FeHelloNative.dll
在dos模式下敲入上面的命令,就能在当前目录生成HelloNative.dll文件了。
C:\>cl
'cl' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
System.out.println(System.getProperties());