我可以运行在JAR中找到的SH文件吗?
我正在尝试从参考资料中提取文件并将其插入进程中。
String fileName = command[0];
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
List<String> temp = new ArrayList<>();
temp.add("sh");
temp.add(file.getPath());
temp.addAll(Arrays.stream(command).filter(s -> !s.contains(".sh")).collect(Collectors.toList()));
String[] stringExec = new String[temp.size()];
for (int i = 0; i < stringExec.length; i++)
stringExec[i] = temp.get(i);
// Process process = Runtime.getRuntime().exec(stringExec);
Path script = Files.createTempFile(null, ".sh",
PosixFilePermissions.asFileAttribute(
PosixFilePermissions.fromString("rw-rw-r--")));
Files.copy(file.toPath(), script, StandardCopyOption.REPLACE_EXISTING);
String[] cmd = { "bash", script.toString() };
ProcessBuilder builder = new ProcessBuilder(cmd);
builder.inheritIO();
Process process = builder.start();
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(process.getErrorStream()));
String line;
while ((line = reader.readLine()) != null) {
CustomLog.log(line, TypeLog.LOG);
}
while ((line = stdError.readLine()) != null) {
CustomLog.log(line, TypeLog.WARN);
}
Files.delete(script);
当我尝试以这种方式运行时,我给了我一个错误
java.nio.file.NoSuchFileException: file:/root/Documents/module.jar!/file.sh
或者只是如果外部文件然后我可以执行它?
我怀疑files.copy
会从JAR中复制文件。我建议使用classloader.getResourceasStream
并将流复制到临时文件。
注意2:在Jenkins/Configuration/under shell中,我提到了C:\cygwin\bin\mintty.exe 下面是输出 $C:\cygwin\bin\cygpath-w C:\cygwin\bin\mintty.exe[workspace]$C:\cygwin\bin\mintty.exe-xe D:\539707\tomcat-7.0.12\temp\hudson4
我在Grizzly服务器上为Jersey应用程序运行以下简单示例: 当我从IntelliJ运行它时,一切都按照预期工作。 已连接到目标VM,地址:“127.0.0.1:61163”,传输:“Socket”2016年12月30日4:00:07PM com.sun.jersey.api.core.PackagesResourceConfig init信息:在包中扫描根资源和提供程序类:Applicat
在docker文件中运行sh脚本时,出现以下错误: /上传。上海:5:/上载sh:sudo:找不到/上载sh:21: /上载sh:换人不好 DockerFile 有什么想法吗?
问题内容: 如果您在 / myfolder中 有一个名为jar的文件,并且您想使用从中调用的类,那么如何从命令行进行操作呢? 我以为会进入目录然后说,但这不起作用。任何帮助,将不胜感激。 问题答案: 使用。 如果该类不在包中,则只需。 如果您不在所在目录中,则可以执行以下操作: 在Unix或Linux平台上:
我需要使用存储在jar文件中的build.xml文件运行ANT构建。这个jar文件在类路径上可用。有没有可能做到这一点,而不爆炸的jar文件,并保存build.xml到本地目录?如果是这样,我该怎么做。 更新: jar文件是一个ant构建项目,其中类路径中的build.xml是通过使用ant库的java程序运行的。前端是一个web应用程序,它作为依赖项加载这个构建项目jar。用户将单击构建应用程序
问题内容: 我在Bean Shell Sampler中尝试了以下方法; 看来,它无法运行。.我是否以正确的方式进行操作? 问题答案: 如果您需要使用Beanshell进行此操作,建议对process命令行进行以下修改: 有关更多信息,请参见cmd.exe文档。 但是,在大多数情况下,使用OS Process Sampler 可能更容易,它允许执行任意命令和程序。了解如何从JMeter本地和远程运行