【发布时间】:2015-06-17 16:50:23
【问题描述】:
我有一个 jar,它使用 Java 中的 XSLT 将一种 XML 转换为另一种 XML 格式。 jar 将输出复制到某个文件夹。当在命令提示符下运行它但通过Runtime.getRuntime().exec or ProcessBuilder 运行它时,它工作得非常好,并没有完成该过程。只有 25 个文件被转换并冻结。当我关闭进程时,我可以看到输出文件夹中加载的所有文件都没有加载到同一个文件夹中。
有什么建议吗?
我的代码
private boolean runLoaderScript() throws IOException, InterruptedException {
String args[] = { "java", "-jar", "C:\\Users\\gursahibsahni\\Desktop\\jar\\epnlm_new-1.0.0-jar-with-dependencies_WSJ_stringdate.jar", "-c", "-f", "-d", "7", "C:\\Users\\gursahibsahni\\Desktop\\ConsynInput\\wsjInput\\input" };
ProcessBuilder builder = new ProcessBuilder(args);
Process qq = (builder).start();
qq.waitFor();
return true;
}
private boolean runValidator() throws IOException, InterruptedException {
Process validatorProcess = Runtime.getRuntime().exec("java -jar C:\\Users\\gursahibsahni\\Desktop\\jar\\wsj_jar_20140423.jar -efv -d 7 C:\\Users\\gursahibsahni\\Desktop\\ConsynInput\\wsjInput\\output");
return (validatorProcess.waitFor()) == 0 ? true : false;
}
此外,当我尝试在我的项目中导入 jar 并调用 main 函数来转换 XML 时,它没有正确转换 XML。 意思是,常量的出现非常好,但是在导入期间没有调用类文件中调用以获取数据的函数。
是的!在命令行上运行jar就成功了!它完美无缺。但是导入时无法正确转换。为什么会有这样的行为?它非常奇怪。请帮忙。
【问题讨论】:
-
当您可以将 JAR 文件导入到类路径并执行
{CLASS}.main({ARGS});(您可以使用反射动态导入类)时,为什么还要在 Java 中使用 exec? -
是的,它确实有效。但是为什么上述方法不起作用。 ?
-
@nulldev 我已经更新了问题。
标签: java xml xslt cmd processbuilder