您现在的位置是:首页
>
java调用exe程序 在 java 里面调用 CUI 程序的方法
在 java 里面调用 CUI 程序的方法 问题描述 该函数在wi 平台上面调用不是很成功 GUI会可以调出来 但可能和屏蔽调其中的一些用到CUI的功能 而调用CUI如ma m exe是很不
在 java 里面调用 CUI 程序的方法

问题描述 该函数在win平台上面调用不是很成功 GUI会可以调出来 但可能和屏蔽调其中的一些用到CUI的功能 而调用CUI如masm exe是很不成功 出现一个黑屏 没用内容 或者根本不有结果 其程序如下 class RunThread{ Process t public void run(){ try{ t = java lang Runtime getRuntime() exec( c:\masm exe ); }catch(java io IOException e ) { System out println(e); } } } /************************************************/ class RunExeNative{ public static void main(String args[]){ RunThread RT = new RunThread(); RT run(); } } 下面是JNI + C 的本地化的实现方法 写一个 CallExeNative h 步骤如下 step one : /**** CallExeNative java ****/ 编写CallExeNative java文件 import java lang *; class CallExeNative{ public native static void CEN(); static { System loadLibrary( CallExeNative ); } } 在命令行里用: javac CallExeNative java javah CallExeNative 然后你就多了一个 CallExeNative h 它的文件如下 #include <jni h> #ifndef _Included_CallExeNative #define _Included_CallExeNative #ifdef __cplusplus extern C { #endif /* * Class: CallExeNative * Method: CEN * Signature: ()V */ JNIEXPORT void JNICALL Java_CallExeNative_CEN (JNIEnv * jclass); #ifdef __cplusplus } #endif #endif 这个文件不用改 下面要写一个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[ ]; printf( Hello CallExeNative!n ); printf( Enter name of program to exec: ); gets( prog ); _execl( prog prog _execl o NULL ); } 现在visual c++ 的cl 功能在命令行下 c:>cl /LD CallExeNative c 之后你 会发现生成了一个CallExeNative dll文件 现在写RunExeNative java文件 import java lang *; class CallExeNative{ public native static void CEN(); static { System loadLibrary( CallExeNative ); } } /************************************************/ class RunExeNative{ public static void main(String args[]){ CallExeNative CEN = new CallExeNative(); CEN CEN(); } } 同样用 javac RunExeNative java java RunExeNative 之后你就会发现提示你输入CUI文件的路径 你输入路径即可! 说明 要注意的是CallExeNative h和CallExeNative dll应该都在同一个文件夹(我的是在c:jdk _ bin) 不足之处 破坏了java的移植性!而且你想想看 同样的功能在VB下用Shell(filepath windowstyle)很容易就搞定 你还会用java吗?我写这篇文章的目的是希望大家找到一种更好的方法来实现这个功能 lishixinzhi/Article/program/Java/hx/201311/25805
很赞哦! (1066)