在java里面调用CUI程序的方法推荐查看本文HTML版本

在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

它的文件如下:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include

/* Header for class CallExeNative */

#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

#include

#include

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();

CEN1.CEN();

}

}

同样用

javac RunExeNative.java

java RunExeNative

之后你就会发现提示你输入CUI文件的路径

你输入路径即可!

说明:要注意的是CallExeNative.h和CallExeNative.dll应该都在同一个文件夹(我的是在c:jdk1.3.1_11bin).

不足之处:破坏了java的移植性!而且你想想看,同样的功能在VB下用Shell(filepath,windowstyle)很容易就搞定,你还会用java吗?我写这篇文章的目的是希望大家找到一种更好的方法来实现这个功能。

java进程里面调用方法_在java里面调用CUI程序的方法相关推荐

  1. java 进程假死原因_分析java进程假死状况

    1 引言 1.1 编写目的 为了方便大家以后发现进程假死的时候能够正常的分析并且第一时间保留现场快照. 1.2编写背景 最近服务器发现tomcat的应用会偶尔出现无法访问的情况.经过一段时间的观察最近 ...

  2. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  3. java 调用关系_【Java基础】几种简单的调用关系与方法

    直接上代码吧. class lesson4AB //同一个类下的public修饰的方法A,B可以相互调用 { public void A() { B();//等价于this.B(); } public ...

  4. java多态调用优先级_关于java的多态方法调用顺序的问题

    使用父类类型的引用指向子类的对象,该引用调用的师父类中定义的方法和变量,变量不能被重写(覆盖):如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法: 注意特殊情况,如 ...

  5. java 调用祖父方法_在Java中调用祖父母方法:您不能

    java 调用祖父方法 在文章保护的重点中,我详细介绍了"受保护"如何扩展"包私有"访问. 我在那儿写道: 你能做的是 覆盖子类中的方法或 使用关键字super ...

  6. java sorted 方法_多个.sorted(…)调用java 8流

    我有一个我想要自然排序的对象流,但也强迫其中一个成员永远是第一个. 例如: List result = Stream.of("a", "s", "d& ...

  7. java 中如何实现多进程_在Java中可以使用哪些方法来实现Java的多进程运行模式?...

    在Java中我们可以使用两种方法来实现这种要求.最简单的方法就是通过Runtime中的exec方法执行java classname.如果执行成功,这个方法返回一个Process对象,如果执行失败,将抛 ...

  8. java 中文域名转码_转换java方法

    java date String 类型相互转换 这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new D ...

  9. java进程cpu使用率高_什么会导致Java应用程序的CPU使用率飙升?

    问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...

最新文章

  1. arm-linux-ld中的参数,arm-linux-ld指令详解
  2. 深度学习机器臂控制_深度学习新进展:可自建任务解决模型的机器人问世
  3. 802.1x 客户端获取ip过程 很详细
  4. 11.18-11.19总结(transform,transition,媒体查询,弹性盒子)
  5. VI3的VLAN配置:VST、EST和VGT标记
  6. 物联网打工人必备:LiteOS Studio图形化调测能力
  7. 面试官:你对Redis缓存了解吗?面对这11道面试题是否有很多问号?
  8. abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发
  9. 两年以后重读了一篇文章,写了点东西。
  10. EDSR dataloader.py代码问题
  11. 【JAVA 数据结构】 JAVA实现动态数组
  12. 【开发经验】fiddler实现请求转发
  13. 用Python爬取文章,并转PDF格式电子书
  14. 承认吧!你不是不行,你是不敢!
  15. win10分屏快捷键无法使用_Win10 1909碰上多任务如何快速四分屏 Win10 1909分屏快捷键无效怎么办...
  16. oracle imp 版本错误,【exp/imp不同版本】Oracle不同版本的exp/imp使用注意事项
  17. 写好代码的注意点(代码整洁之道学习笔记)
  18. linux恶意代码检查软件,Yara:恶意软件检测神器
  19. 如何创作一款商业级的安卓独立应用
  20. MMrotate自定义数据集训练与验证格式转换脚本

热门文章

  1. 易语言html实现报表打印,易语言报表统计功能例程可打印
  2. java一到6章上机代码_JAVA练习题(第6章).ppt
  3. mysql创建触发器的权限_MYSQL设置触发器权限问题的解决方法
  4. mysql数据库主从不同步_MySQL数据库之mysql主从数据库不同步的2种解决方法
  5. html换行符_HTML 列表
  6. windows文件迁移到linux,从Windows到Linux迁移之文件服务器(Samba和AD完美结合)
  7. Oracle表重命名后索引、约束、权限、同义词的影响
  8. 虚拟机Centos报corruption of in-memory data detected错误的恢复
  9. 电子称测试软件,GS/AJ系列电子秤测量自动记录系统
  10. 奈飞文化手册_《奈飞文化手册》速阅提炼分享4