Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java执行:查找适当的脚本执行器_Java_Bash_Powershell_Process_Exec - Fatal编程技术网

从Java执行:查找适当的脚本执行器

从Java执行:查找适当的脚本执行器,java,bash,powershell,process,exec,Java,Bash,Powershell,Process,Exec,我们目前正在编写一个java应用程序,它允许用户从我们的withen中执行另一个程序。另一个程序可以是另一个可执行文件或脚本,并且可以接受任意数量的命令行参数。我们已经构建了一个GUI来实现这一点,在基本的功能情况下,它可以正常工作 我们正在使用ApacheExec来实现这一点,尽管在这一点上我并不确定它给我们带来了什么价值 我遇到的问题是已知的脚本文件类型 如果打开powershell并键入./myVisualBasicScript.vbs,它将在内部将其转换为wscript.exe./myV

我们目前正在编写一个java应用程序,它允许用户从我们的withen中执行另一个程序。另一个程序可以是另一个可执行文件或脚本,并且可以接受任意数量的命令行参数。我们已经构建了一个GUI来实现这一点,在基本的功能情况下,它可以正常工作

我们正在使用ApacheExec来实现这一点,尽管在这一点上我并不确定它给我们带来了什么价值

我遇到的问题是已知的脚本文件类型

如果打开powershell并键入./myVisualBasicScript.vbs,它将在内部将其转换为wscript.exe./myVisualBasicScript.vbs之类的命令。类似地,iirc在bash中,如果键入./sometschellscript.tcsh,它将在tcshell下调用该脚本

我想知道是否有一个库可以为我提供这个映射。理想情况下,这个图书馆是一个我可以做以下事情的图书馆

CommandLine cmd = new com.awesome.library.CommandLine(
    pathToExecutableOrScript,
    args
);

cmd.execute();
如果这样一个库支持看门狗、超时和信号处理等,那就太好了,但我要寻找的主要功能是某种方法,可以从文件类型映射到运行它们的可执行文件,最好使用扩展名和元属性

我一直在应用程序内部构建一个映射,我至少知道javas java.awt.Desktop.open方法,它几乎可以为我完成这项工作,尽管它更适合GUI应用程序。我不确定它是否有捕获标准输入、输出和错误的设施,或者是否有看门狗和超时等

非常感谢您的帮助。

您可以使用它

// Create ProcessBuilder.
ProcessBuilder p = new ProcessBuilder();
// Use command "notepad.exe" and open the file.
p.command("notepad.exe", "C:\\file.txt");
p.start();


还有execsh、bashScript和execpowershell、script.ps1和execansys、apdlScript.m和execmatlab、matlabscript.m和exec???、scriptthatidontnowabout.funnyExt。。。不断地。作为一名开发人员,我既没有技能也没有时间来构建脚本语言及其执行者的完整列表。我更愿意利用一个库,它本身利用windows文件扩展注册表和类似的linux工具来执行这些文件。这通常是另一种方式,因为Java程序应该在不同的环境中运行。这样做是强制性的吗?反正我不知道你需要这样的图书馆。但我想创建一个批处理文件,它将调用每个受支持的脚本类型,并从Java调用它。将这个问题转化为脚本语言是一个有趣的想法,对我来说应该是显而易见的想法。标记:要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是非主题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。。。。除非只有一个图书馆存在,否则它会存在吗?如果我们谈论的是XStream vs GSon,你是对的,但这并不是要求在一组库中只包含一个库,我要问的是这样一个库的存在。
Process p = Runtime.getRuntime().exec("cmd /c start " + file.getAbsolutePath());