尝试使用Runtime.getRuntime()。exec()执行Java jar
使用由Process返回的实例exec()
Process cat = Runtime.getRuntime().exec('java -jar C:/cat.jar C:/test.txt');BufferedInputStream catOutput= new BufferedInputStream(cat.getInputStream());int read = 0;byte[] output = new byte[1024];while ((read = catOutput.read(output)) != -1) { System.out.println(output[read]);}
参考:http ://docs.oracle.com/javase/7/docs/api/java/lang/Process.html
默认情况下,创建的子进程没有自己的终端或控制台。其所有标准I /O(stdin,stdout,stderr)操作都将重定向到父进程,在该父进程中,可以通过使用方法getoutputStream(),getInputStream()和getErrorStream()获得的流来访问它们。
http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getInputStream()
getInputStream()返回连接到子流程正常输出的输入流。
解决方法在我正在处理的项目中,我需要执行资源文件夹(位于类路径中)中的脚本。我只是在测试最终的脚本功能,因为我在Windows上,所以我需要一种将文件输出到STDIN的方法,因此我创建了一个简单的cat.jar程序来克隆unixscat命令。
因此,当我执行“ java -jar cat.jar someFile.txt”时,它将输出文件到stdout。我敢肯定,我做的事情有不同的方式。
无论如何,我想从主Java程序运行该JAR。我在做
Runtime.getRuntime().exec('java -jar C:/cat.jar C:/test.txt');
我尝试过将正斜杠切换为反斜杠并转义了-没有用。什么都没有发送到标准输出。
在哪里,如果我自己运行猫罐,我会将文件定向到标准输出。
我在这里做错了什么?这是足够的信息吗?
相关文章:
1. css - 使用blur()滤镜为什么有透明的效果2. android - 安卓做前端,PHP做后台服务器 有什么需要注意的?3. Android下,rxJava+retrofit 并发上传文件和串行上传文件的效率为什么差不多?4. python的bs4如何筛选出h1标签中的内容5. javascript - 移动端H5页面禁止缩放了,在浏览器上仍然可以缩放6. javascript - JS设置Video视频对象的currentTime时出现了问题,IE,Edge,火狐,都可以设置,反而chrom却...7. angular.js - 通过数据中children的个数自动生成能点击展开的div8. docker gitlab 如何git clone?9. java - spring-data Jpa 不需要执行save 语句,Set字段就可以自动执行保存的方法?求解10. docker-compose 为何找不到配置文件?
