gpt4 book ai didi

java - Perl 脚本未在 Java 中运行

转载 作者:行者123 更新时间:2023-12-01 05:05:20 25 4
gpt4 key购买 nike

我正在编写代码来从 java 运行 perl 脚本。我向 java 程序提供的命令通过 shell 运行得非常好。但是,当提供给运行时的 exec() 方法时,同一命令会返回退出代码 2。为什么会发生这种情况?

我的代码是:

package org.nlp.rishabh;

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

public class ReferenceExtractor {
public static void main( String[] args ) throws Exception {

String parscitCommand = "/home/rishabh/Desktop/parscit/bin/citeExtract.pl ";
String parscitOptions = "-m ";
String parscitAction = "extract_all ";
String paperPath = "/home/rishabh/Desktop/aas.txt";
String xml = null;

String command = parscitCommand + parscitOptions + parscitAction + paperPath;
System.out.println( command );

try {
Runtime runtime = Runtime.getRuntime();
Process pr = runtime.exec( command );
// Process pr = runtime.exec( new String[] { "perl", parscitCommand, parscitOptions, parscitAction, paperPath } );

BufferedReader reader = new BufferedReader( new InputStreamReader( pr.getInputStream() ) );
String temp;
StringBuilder sb = new StringBuilder();

while ( ( temp = reader.readLine() ) != null ) {
sb.append( temp );
}

xml = sb.toString();

int returnVal = pr.waitFor();
System.out.println( returnVal );
} catch ( Exception e ) {
e.printStackTrace();
}

System.out.println( xml );
}
}

最佳答案

您的文件位于桌面上。您运行 java 代码的方式可能会使其以没有桌面权限的另一个用户身份运行。

尝试将文件移动到公共(public)位置或检查运行 java 进程的用户(您是否使用像 tomcat 这样的 Web 容器?只是通过控制台运行 JVM 实例?)

关于java - Perl 脚本未在 Java 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com