2 kiyo hadoop Kiyo_hadoop 于 2016.03.25 01:46 提问

java中调用命令行,可执行文件带有参数如何设置?

我在使用哈工大分词LTP二进制版本

命令如下
ltp_test --input C:\Users\admin\Desktop\test2.txt --segmentor-lexicon C:\Users\admin\Desktop\dict.txt>C:\Users\admin\Desktop\cs4.xml

就算直接调用ltp_test 也现实系统找不到指定的文件

我应该才能正常的调用呢?

 package demo;

import java.io.BufferedInputStream;  
import java.io.BufferedReader;  
import java.io.InputStreamReader; 

public class JavaCMD {

        public static void main(String[] args) {  

            String cmd = "ltp_test";  


            Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象  
            try {  
                Process p = run.exec(cmd);// 启动另一个进程来执行命令  
                BufferedInputStream in = new BufferedInputStream(p.getInputStream());  
                BufferedReader inBr = new BufferedReader(new InputStreamReader(in));  
                String lineStr;  
                while ((lineStr = inBr.readLine()) != null)  
                    //获得命令执行后在控制台的输出信息  
                    System.out.println(lineStr);// 打印输出信息  
                //检查命令是否执行失败。  
                if (p.waitFor() != 0) {  
                    if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束  
                        System.err.println("命令执行失败!");  
                }  
                inBr.close();  
                in.close();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }  

图片说明

6个回答

devmiao
devmiao   Ds   Rxr 2016.03.25 05:51

带上完整路径试试看

Kiyo_hadoop
Kiyo_hadoop 你好~完整路径指的是?
一年多之前 回复
baidu_32133993
baidu_32133993   2016.03.25 09:05

感觉Process p = run.exec(cmd)这句有问题

Kiyo_hadoop
Kiyo_hadoop 不好意思,代码来源一个博客,非本人所写
一年多之前 回复
longxingzhe001
longxingzhe001   2016.03.25 15:02

你运行的系统环境支持“ltp_test“这个命令?

Kiyo_hadoop
Kiyo_hadoop 你好~支持的,我放入环境变量中了,手动在cmd中是可以打开的
一年多之前 回复
ligang7560
ligang7560   2016.03.25 18:03

你在cmd中执行,是随便任意目录都可以执行吗? 还是要到特定的目录去执行? 从报错来看, 应该是要到特定的目录去执行吧,

zhoujianshi_csdn
zhoujianshi_csdn   2016.03.26 00:15

你在cmd中输入这么命令看看能不能执行。你可能没有把这个程序的所在目录放入环境变量。
如果你把ltptest这个程序所在路径放入了环境变量,而且cmd中能够调用,那么java中这样肯定可以调用的。
如果你觉得改环境变量麻烦,那么你需要先cd到那个程序所在目录。
比如说,那个ltp-test的位置是D:/test/ltp_test.exe,那么在cmd中输入:
D:
cd test
ltp_test --input C:\Users\admin\Desktop\test2.txt --segmentor-lexicon C:\Users\admin\Desktop\dict.txt>C:\Users\admin\Desktop\cs4.xml
如果这样可以调用成功,说明就是环境变量的问题了。

zhoujianshi_csdn
zhoujianshi_csdn   2016.03.26 00:19

如果你已经加入环境变量了,但是在java里还是调用失败,可以考虑Runtime.exec()其他形式的几个函数,他们很多都可以设置工作目录的,总有一个适合你的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!