在ubuntu1.6中用java调用ubuntu1.6中的程序
程序在 /opt/aaa/ 文件下 程序名字叫 jsopb
程序sopb 会有一个入参和返回值
怎么使用java代码调用sopb 这个程序
给sopb 这个程序 传一个字符串 返回一个 值
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();//关闭流
你好 我看你的是在WINDOWS中的java代码吗?
我的程序是在 linux 中
我用命令行给你演示一遍
第一步 进入命令行
第二步 cd /opt/
回车
第三步 ./chengxu -t '字符串'
回车
得到返回值‘返回值’
这就是在命令行的步骤
现在需要在java代码中调用 chengxu 这个程序
给 chengxu 这个程序传一个字符串
然后java得到返回值存进数据库
./chengxu -t '字符串'
这个命令中的 chengxu 程序名字我谁便写的 ’字符串‘ 是程序需要的值
@sun-java:
大概就这样子咯
Process pr = rt.exec("./chengxu -t "+"'字符串'", arr, new File("/opt/"));
@czd890: 我试试
@czd890: bout.write("1 2");//输出数据
这一步输出的数据在哪里打印处理
@sun-java: 多看看上面发的文档, 然后多百度一下 java process .
@czd890:感谢啊
String s = new BufferedReader(new InputStreamReader(pr.getInputStream())).readLine();
System.out.println(s);
是这样吧
@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: 这个环境变量是传给你的chengxu 这个程序的。他不需要就可以不传
@czd890: 我自己还写了一个可执行的jar包
这个叫jar包需要linux的环境变量
cd /opt/
java -jar 字符串
得到返回值
一共执行2 步
第一步
进入程序目录
二步
– sun-java 2年前执行程序 收到返回值