使用java将对象属性传递给bash脚本

时间:2017-03-24 08:17:55

标签: java bash swing jfilechooser processbuilder

目前我正在尝试使用Swing的文件选择器创建一个桌面应用程序,该文件选择器将特定类型的文件转换为另一个文件,使用cygwin。相关的代码部分是:

String[] cmd = new String[]{"C:\\cygwin64\\bin\\mintty.exe", "/cygdrive/c/Users/orhun.vatansever/workspace/extchangegui/src/extchangegui/dene.sh"};
                Process pr = Runtime.getRuntime().exec(cmd);

工作正常,但因为我的bashscript的内容就像

cd "${0%/*}"
java -jar xyz.jar aegis.xyz

这意味着我的代码适用于一个特定的xyz文件,我想要做的是选择文件并在该特定xyz文件上运行命令。我可以使用myfile.getName()获取文件名,但是我不知道如何使用这些数据,将它放在进程构建器中。我认为有两个解决方案,一个是将一个流程构建器参数(不知道哪一个)设置为" java -jar xyz.jar" + file.getName()&#34 ;" ,其他是在点击文件选择器的打开按钮时更改脚本的内容(我认为这没有意义)。

1 个答案:

答案 0 :(得分:0)

您可以将名称字符串添加到命令数组中,并在脚本中将其引用为positional parameter。说cmd[2] = "xyz"

 java -jar ${2}.jar aegis.${2}
  

这不是我想做的......我想...通过file.getName()属性获取其名称,并以某种方式将其传递给脚本,或者像java -jar xyz.jar + chosenFile.getName()

一样运行

然后在命令字符串cmd[2] = file.getName()

中传递文件名
 java -jar xyz.jar ${2}

您还应该考虑使用ProcessBuilder来创建Process