下面要写一个CallExeNative.c文件:该函数的功能是将你的CUI文件调出来
文件如下:
#include "C:\CallExeNative.h"/*在你的机器上调试时可能要修改该文件路径*/
#include <stdio.h>
#include <process.h>
#include <conio.h>
JNIEXPORT void JNICALL Java_CallExeNative_CEN(JNIEnv* env, jclass cl)
{
char prog[80];
printf("Hello CallExeNative!\n");
printf( "Enter name of program to exec: " );
gets( prog );
_execl( prog, prog, "_execl", "two", NULL );
}
现在visual c++ 的cl 功能在命令行下
c:\>cl /LD CallExeNative.c
之后你会发现生成了一个CallExeNative.dll文件,现在写RunExeNative.java文件:
/*include
CallExeNative.h
CallExeNative.dll
*/
import java.lang.*;
/*load a native method : to call a native file*/
class CallExeNative{
public native static void CEN();
static
{
System.loadLibrary("CallExeNative");
}
}
/************************************************/
class RunExeNative{
public static void main(String args[]){
CallExeNative CEN1 = new CallExeNative();
[1] [2]
CEN1.CEN();
}
}
同样用
javac RunExeNative.java
java RunExeNative
之后你就会发现提示你输入CUI文件的路径
你输入路径即可!
说明:要注意的是CallExeNative.h和CallExeNative.dll应该都在同一个文件夹(我的是在c:\jdk1.3.1_11\bin\).
不足之处:破坏了java的移植性!而且你想想看,同样的功能在VB下用Shell(filepath,windowstyle)很容易就搞定,你还会用java吗?我写这篇文章的目的是希望大家找到一种更好的方法来实现这个功能。
(出处:http://www.sheup.com)