java linux command_Linux Command没有给出在java程序中调用的输出

博主尝试使用Java代码在Linux环境下执行非标准命令`dmtxread`,但遇到`IOException`,提示找不到文件或目录。问题在于命令数组中的空格导致了错误的命令解析。解决方案包括去除命令元素间的空格或使用完整命令路径。尽管尝试了建议的修改,问题依然存在,可能是由于命令的执行路径未包含在`PATH`环境变量中。
摘要由CSDN通过智能技术生成

我试图使用java代码在linux上调用非linux命令。该命令所需的库安装在我的linux机器上。这是我的java代码,它使用Runtime.getRuntime()。exec();来调用该命令。

该命令从映像文件中读取borcode并对其进行解码并在控制台上显示该值。

import java.io.BufferedReader;

import java.io.File;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.ArrayList;

public class demo {

public static void main(String args[]){

getcodes();

}

public void getCodes(){

try

{

Process p;

String command[]=new String[3];

command[0]="dmtxread";

command[1]="-n";

command[2]="/home/administrator/sandip/xyz.tif";

System.out.println("Command :"+command[0]+command[1]+command[2]);

p=Runtime.getRuntime().exec(command);

System.out.println(p.waitFor());

BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));

String line=reader.readLine();

System.out.print("Decoded      :-"+line);

}

}catch(IOException e1) {

e1.getMessage();

e1.printStackTrace();

}catch(InterruptedException e2) {

e2.getMessage();

e2.printStackTrace();

}

}

}

当我在linux上运行这个java代码时,我得到以下异常

部分例外情况如下:

命令:dmtxread -n /home/administrator/sandip/xyz.tif

java.io.IOException:无法运行程序"dmtxread":java.io.IOException:error = 2,没有这样的文件或目录

在java.lang.ProcessBuilder.start(ProcessBuilder.java:475)

在java.lang.Runtime.exec(Runtime.java:610)

在java.lang.Runtime.exec(Runtime.java:483)

at leadertechbarcode.TwoDBarCodeReadHelper.getCodes(TwoDBarCodeReadHelper.java:53)

有些时候程序在调用以下代码行后挂起

P = Runtime.getRuntime.exec(命令)

当我复制代码打印的命令并在终端上运行它运行正常。

请告诉我这个问题的朋友。

有没有其他方法可以使用java调用此命令?

谢谢!

stackoverflow.com/questions/10481669/

您正在使用的Runtime.exec(String[])方法需要将第一个元素作为命令,将以下元素作为单独的参数。 因此,如果它们中有任何空格,它们将在传递给底层操作系统之前被转义或引用。

在您的情况下,command[0]包含命令的名称,后跟空格。 这将导致系统搜索并执行其名称中包含该空间的命令。 找不到这个。

要解决此问题,您应该删除command中每个元素内容周围的空格,或者您可以手动连接它们并将它们作为单个字符串传递给Runtime.exec(String)方法。 请注意,您还有一个空格跟踪"-n"参数。 你可能也需要删除那个。

谢谢你,先生! 期待你的答复。 根据你的建议,我做了同样的事,但得到了相同的结果。

您可能还需要将程序的目录添加到PATH,或使用完整路径调用它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值