可运行jar包调用exe可运行文件,子进程阻塞
背景:
须要在项目的測试工具中加入一个button,点击后直接打开某exe工具。
这个工具的功能是导入txt文件,转为excel报表输出。
无奈解析了两行之后就停止不动了,也不报错。关闭測试工具后,就非常顺畅的继续执行。
原因:
txt转excel报表过程中,中间信息是存在内存中的,缓存区的空间被占满后,程序就被堵塞了,一直在等待缓存区空间资源的释放,所以须要建立线程及时清空缓存区。
解决的方法:
1.创建StreamClean线程类
/*
* 建立线程及时清除堵塞区,避免子线程堵塞(调用外部工具txt->excel时发生的问题。)
*/
public class StreamClean extends Thread { InputStream is;
String type; public StreamClean (InputStream is, String type) {
this.is = is;
this.type = type;
} public void run() {
try {
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null){
System.out.println(type + ">" + line); //控制台输出
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
2.在调用exe运行文件处加入下列代码
Process process = null;
try {
process =Runtime.getRuntime().exec(txtToexcel); //txtToexcel是调用工具的dos命令
new StreamClean(process.getInputStream(), "INFO").start();
new StreamClean(process.getErrorStream(), "ERROR").start();
process.waitFor();
}catch (Throwable t) {
t.getStackTrace();
} finally {
if (process != null){
process.destroy();
}
process = null;
}
再运行就木有问题啦~~~
可运行jar包调用exe可运行文件,子进程阻塞的更多相关文章
- 可运行jar包转.exe
1.工具:launch4j.exe 2.导出可运行jar包(runable Jar file) 3.截图: 4.生成结果:
- Java中Jar包调用命令行运行编译
原文链接:https://www.toutiao.com/i6491877373942694413/ 记事本编写两个简单的类 文件结构目录 启动DOS,进入文件所在目录 进入到class所在文件的目录 ...
- 关于spring boot打出的jar包在Linux中运行
众所周知, spring boot打出的jar包可以通过 "java -jar xxx.jar"的方式来运行 但是在Linux中, 通过这个命令运行的话会占用该窗口, 当我们 Ct ...
- 如何打包/运行jar包,及生成exe文件
关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了 ...
- .bat文件和Jar包的生成及运行
.bat文件和Jar包的生成及运行 1.Jar包简单介绍 Jar包是Java中所特有的一种压缩文档,有点类似于zip包,区别在于Jar包中有一个META-INF\MANIFEST.MF文件(在生成Ja ...
- windows 下启动运行 jar 包程序
windows 下 运行 jar 包 java -jar XXX.jar java -server -Xms1024m -Xmx20480m -jar $JAR_NAME.jar windows 后台 ...
- 使用jar命令打jar/war包、创建可执行jar包、运行jar包、及批处理脚本编写
jar 命令 jar 是一个jar.exe可执行命令,即可以生成jar文件,也可以生成war文件 使用示例:jar -cvf ../xxx.jar * -c create,创建新的归档文档 ...
- java打jar包和运行jar包的两种方式
java打jar包和运行jar包的两种方式更详细的打包方式请参考https://www.cnblogs.com/mq0036/p/8566427.html 一.java类不依赖第三方jar包以简单的一 ...
- 不显示cmd窗口运行jar包
今天,打开导出的jar包,发现并不能运行,查看jar包中的META-INF文件夹下的MANIFEST.MF文件,发现MANIFEST.MF中并没有Main-Class,于是,就手动添加相应的信息,本项 ...
随机推荐
- SICP中sqrt(开方)的实现(附C#实现)
#lang racket (define (square x) (* x x)) (define (sqrt-iter guess x) (if (good-enough? guess x) gues ...
- 工作随记 warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
错误信息:F:\BUILD\IDS7020\trunk\manage_src\dev\java_src\tds7030-web\Ant\build.xml:344: warning: 'include ...
- java - final和static 关键字 再记忆
一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效 ...
- HDOJ 3790 双权值Dijkstra
#include <iostream> #include <stdio.h> #include <string.h> #include <cstring> ...
- 基于visual Studio2013解决C语言竞赛题之1002字符打印
题目 解决代码及点评 /************************************************************************/ /* ...
- 【Unity 3D】使用 2DToolkit 插件 制作2D精灵动画
话说博客传图也太麻烦了吧,一个一个文件一个一个传....为什么不能直接粘贴了,自动上传呢... 刚直接粘贴了,结果一张图没有,又重新截一次图,在传了一次...真是太**了 好了,吐槽完了,开始博客吧 ...
- Windows NT 技术简介
Windows NT 技术简介 NT:New Technoly(新技术,因比DOS.WIN9X采用了很多新技术而得名) Windows NT基本介绍 WindowsNT是Microsoft推出的面向工 ...
- Android开发之大位图二次採样压缩处理(源码分享)
图片有各种形状和大小.在很多情况下这些图片是远远大于我们的用户界面(UI)且占领着极大的内存空间,假设我们不正确位图进行压缩处理,我们的程序会发生内存泄露的错误. MainActivity的代码 pa ...
- Java 接口和抽象类差别
原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...
- CSS中怎么让DIV居中(转载)
CSS 如何使DIV层水平居中 今天用CSS碰到个很棘手的问题,DIV本身没有定义自己居中的属性, 网上很多的方法都是介绍用上级的text-align: center然后嵌套一层DIV来解决问题. 可 ...