首页 新闻 会员 周边 捐助

在ubuntu1.6中用java调用ubuntu1.6中的程序

0
[已解决问题] 解决于 2021-12-03 13:38

在ubuntu1.6中用java调用ubuntu1.6中的程序
程序在 /opt/aaa/ 文件下 程序名字叫 jsopb
程序sopb 会有一个入参和返回值
怎么使用java代码调用sopb 这个程序
给sopb 这个程序 传一个字符串 返回一个 值

sun-java的主页 sun-java | 菜鸟二级 | 园豆:206
提问于:2021-12-02 17:15

一共执行2 步

第一步
进入程序目录

二步
执行程序 收到返回值

sun-java 2年前
< >
分享
最佳答案
0

https://zhuanlan.zhihu.com/p/44957705

Runtime rt = Runtime.getRuntime();//获得Runtime对象
	String arr[] = {"CLASSPATH=D://","Path=C:\\Program Files\\Java\\jdk1.8.0_131\\bin"};//执行exec时的环境变量
        
        //exec方法第一个参数是执行的命令,第二个参数是环境变量,第三个参数是工作目录
	Process pr = rt.exec("cmd /c javac a.java && java a", arr, new File("D://"));
        
        //获取输出流并转换成缓冲区
        BufferedWriter bout = new BufferedWriter(new OutputStreamWriter(pr.getOutputStream()));
        bout.write("1 2");//输出数据
        bout.close();//关闭流
奖励园豆:5
czd890 | 专家六级 |园豆:14488 | 2021-12-03 11:43

你好 我看你的是在WINDOWS中的java代码吗?

我的程序是在 linux 中
我用命令行给你演示一遍
第一步 进入命令行
第二步 cd /opt/
回车
第三步 ./chengxu -t '字符串'
回车
得到返回值‘返回值’

这就是在命令行的步骤
现在需要在java代码中调用 chengxu 这个程序
给 chengxu 这个程序传一个字符串
然后java得到返回值存进数据库

sun-java | 园豆:206 (菜鸟二级) | 2021-12-03 12:10

./chengxu -t '字符串'
这个命令中的 chengxu 程序名字我谁便写的 ’字符串‘ 是程序需要的值

sun-java | 园豆:206 (菜鸟二级) | 2021-12-03 12:11

@sun-java:
大概就这样子咯

Process pr = rt.exec("./chengxu -t "+"'字符串'", arr, new File("/opt/"));
czd890 | 园豆:14488 (专家六级) | 2021-12-03 12:13

@czd890: 我试试

sun-java | 园豆:206 (菜鸟二级) | 2021-12-03 12:14

@czd890: bout.write("1 2");//输出数据
这一步输出的数据在哪里打印处理

sun-java | 园豆:206 (菜鸟二级) | 2021-12-03 12:21

@sun-java: 多看看上面发的文档, 然后多百度一下 java process .

czd890 | 园豆:14488 (专家六级) | 2021-12-03 12:24

@czd890:感谢啊

String s = new BufferedReader(new InputStreamReader(pr.getInputStream())).readLine();
System.out.println(s);
是这样吧

sun-java | 园豆:206 (菜鸟二级) | 2021-12-03 12:26

@czd890:在问大佬一个问题啊
String arr[] = {"CLASSPATH=D://","Path=C:\Program Files\Java\jdk1.8.0_131\bin"};//执行exec时的环境变量

比如我的 linux 中的java环境是
export JAVA_HOME=/usr/java/jdk1.8.0_221
export JRE_HOME=/usr/java/jdk1.8.0_221/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
这个 arr[] 我应该怎么写

sun-java | 园豆:206 (菜鸟二级) | 2021-12-03 13:08

@sun-java: 这个环境变量是传给你的chengxu 这个程序的。他不需要就可以不传

czd890 | 园豆:14488 (专家六级) | 2021-12-03 13:22

@czd890: 我自己还写了一个可执行的jar包
这个叫jar包需要linux的环境变量
cd /opt/
java -jar 字符串
得到返回值

sun-java | 园豆:206 (菜鸟二级) | 2021-12-03 13:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册