首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从jar中的资源运行SH文件

是指从Java的可执行JAR文件中运行一个Shell脚本文件(.sh文件)。这种方式通常用于在Java应用程序中执行一些系统级别的操作或命令。

在Java中,可以使用ProcessBuilder类来创建一个新的进程并运行Shell命令或脚本。以下是一个示例代码,演示了如何从jar中的资源运行SH文件:

代码语言:txt
复制
import java.io.*;

public class RunShellScriptFromJar {
    public static void main(String[] args) {
        try {
            // 获取jar中的资源文件路径
            String scriptPath = RunShellScriptFromJar.class.getResource("/script.sh").getPath();

            // 创建进程并运行Shell脚本
            ProcessBuilder processBuilder = new ProcessBuilder("sh", scriptPath);
            Process process = processBuilder.start();

            // 获取Shell脚本的输出结果
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            // 等待Shell脚本执行完毕
            int exitCode = process.waitFor();
            System.out.println("脚本执行完毕,退出码:" + exitCode);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,首先通过getResource()方法获取jar中的资源文件路径。然后使用ProcessBuilder创建一个新的进程,并指定要执行的Shell脚本文件。接下来,通过getInputStream()方法获取Shell脚本的输出结果,并将其打印出来。最后,使用waitFor()方法等待Shell脚本执行完毕,并获取其退出码。

注意:在将Shell脚本文件打包到JAR中时,需要将其放置在合适的位置,例如在JAR的根目录或指定的资源文件夹中。在示例中,假设Shell脚本文件名为script.sh,并将其放置在JAR的根目录。

对于这个问题中提到的名词"从jar中的资源运行SH文件",可以概括为从Java的可执行JAR文件中执行Shell脚本文件的操作。这种方式常见于需要在Java应用程序中执行一些系统级别的操作或命令的场景。

腾讯云相关产品和产品介绍链接地址:暂无推荐特定腾讯云产品与此操作相关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java中jar包内的类访问jar包内部的资源文件路径和获得读取资源文件内容的问题

在大数据开发和java web开发中,我们有时会在程序中读取一些资源文件的内容。...当我们在本地运行调试的时候是没有任何问题的,但是当我们将程序打成jar包上传到集群中后运行时,发现报错:“找不到配置文件的路径”。虽然jar中确实存在配置文件,但是还是读取不到。...相关解决方法可以参考以下相关资料:  java中jar包内的类访问jar包内部的资源文件的路径问题: http://blog.csdn.net/mm_bit/article/details/50372229...获取jar包内部的资源文件: http://blog.csdn.net/luo_jia_wen/article/details/50057191 【解惑】深入jar包:从jar包中读取资源文件: http...://www.iteye.com/topic/483115  jar读取资源配置文件,jar包内包外,以及包内读取目录的方法: http://blog.csdn.net/T1DMzks/article/

9.4K20

获取jar包内部的资源文件

通常获取一个资源文件很简单,问题是对于jar包内的资源文件,可能会发生意外。...main方法它会读取当前根路径下(src/bin)的资源文件,假如存在目录library和子文件a.txt,这里会打印出true; 现在把这段代码和资源文件打成myfile.jar并运行在一个myeclipse...然而控制台打印false;将其引入到war工程在tomcat中运行,依然打印false。 也就是说,资源文件的使用类无法找到自己,jar包正常的功能将无法提供。这是一个常见的关于jar路径的问题。.../library 显而易见,获取jar包中的文件路径的格式已经变为*.jar!*(除了第一个),这种格式的路径,不能通过new File的方式找到文件。目前本人也没有找到其它处理方式,欢迎评论指点。...在这种情况下,如果想让jar读取到自己的资源文件,可以通过类加载器的getResourceAsStream方法来解决。

1.7K20
  • Java -jar参数详解:掌握Java可执行JAR文件的运行技巧

    作为一种常用的开发语言,Java经常使用可执行的JAR(Java Archive)文件来打包和分发应用程序。使用java -jar命令运行JAR文件是一种方便快捷的方式。...本文将详细介绍java -jar命令的各种参数,帮助您充分利用这个功能。 一、简介 java -jar命令用于运行可执行的JAR文件。...它会自动查找JAR文件中的清单文件(MANIFEST.MF),并根据清单文件中的Main-Class属性指定的主类来启动应用程序。...=256m 将元空间的最大大小设置为256MB,最后,通过-jar选项指定要运行的JAR文件为myapp.jar。...命令的常用参数、使用方法及其启动脚本,帮助您更好地掌握Java可执行JAR文件的运行技巧。

    3.6K30

    Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(res、图片等) ----------------------------------------....jar文件中的类找不到。...这里可以猜测,使用上述方法将android项目打成.jar文件的过程中,并没有将android项目原来引用的第三方.jar文件也一起打入到新的.jar文件中。...文件的android项目原先引用的第三方.jar文件没有被打入到 新的.jar文件中 那么我们想:怎么在android项目打成.jar文件的时候 顺带把 android项目引用的第三方.jar文化也一并打入到新的...如果不想命名为build.xml,运行时可以使用 ant -buildfile test.xml 命令指明要运行的构建文件。

    1.3K100

    Centos7 运行Springboot打包后的jar文件的相关操作

    1.运行jar包命令如下: 方式1:java -jar demo.jar 特点:CTRL + C 或 关闭ssh窗口,程序退出 方式2: java -jar demo.jar & 特点...方式3:nohup java -jar demo.jar & 特点:nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行 2.结束运行的jar文件: 使用ps aux命令查看进程号...PID,执行 kill -9 PID 结束程序 前台进程,直接执行 Ctrl+c 终止运行程序 3.限制jar文件的内存使用: nohup java -jar -Xms512M -Xmx2048M...MaxPermSize:永久内存最大值 堆内存和永久内存区别以及其他参数设置,参考jvm运行机制 一般情况下执行以下命令限制JAR文件使用内存即可: 1.在后台不间断运行程序: nohup java...-jar -Xms100M -Xmx200M demo.jar 2.前台运行程序限制内存 java -jar -Xms100M -Xmx200M demo.jar ---- JAVA

    45120

    Centos7 运行Springboot打包后的jar文件的相关操作

    1.运行jar包命令如下: 方式1:java -jar demo.jar 特点:CTRL + C 或 关闭ssh窗口,程序退出 方式2: java -jar demo.jar & 特点...方式3:nohup java -jar demo.jar & 特点:nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行 2.结束运行的jar文件: 使用ps aux命令查看进程号...PID,执行 kill -9 PID 结束程序 前台进程,直接执行 Ctrl+c 终止运行程序 3.限制jar文件的内存使用: nohup java -jar -Xms512M -Xmx2048M...MaxPermSize:永久内存最大值 堆内存和永久内存区别以及其他参数设置,参考jvm运行机制 一般情况下执行以下命令限制JAR文件使用内存即可: 1.在后台不间断运行程序: nohup...java -jar -Xms100M -Xmx200M demo.jar 2.前台运行程序限制内存 java -jar -Xms100M -Xmx200M demo.jar

    69310

    Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(res、图片等) ----------------------------------------....jar文件中的类找不到。...这里可以猜测,使用上述方法将android项目打成.jar文件的过程中,并没有将android项目原来引用的第三方.jar文件也一起打入到新的.jar文件中。...文件的android项目原先引用的第三方.jar文件没有被打入到 新的.jar文件中 那么我们想:怎么在android项目打成.jar文件的时候 顺带把 android项目引用的第三方.jar文化也一并打入到新的...如果不想命名为build.xml,运行时可以使用 ant -buildfile test.xml 命令指明要运行的构建文件。

    1.2K40

    解决SpringBoot jar包中的文件读取问题

    前言 SpringBoot微服务已成为业界主流,从开发到部署都非常省时省力,但是最近小明开发时遇到一个问题:在代码中读取资源文件(比如word文档、导出模版等),本地开发时可以正常读取 ,但是,当我们打成...jar包发布到服务器后,再次执行程序时就会抛出找不到文件的异常。...通过仔细观察堆栈信息,我发现此时的文件路径并不是一个合法的URL(文件资源定位符)。原来jar包中资源有其专门的URL形式:jar:!/{entry} )。...所以,此时如果仍然按照标准的文件资源定位形式 File f=new File("jar:file:……"); 定位文件,就会抛出java.io.FileNotFoundException。...解决 虽然我们不能用常规操作文件的方法来读取jar包中的资源文件docxTemplate.docx,但可以通过Class类的getResourceAsStream()方法,即通过流的方式来获取 :

    3.1K21

    从 PE 文件资源表中提取文件的版本信息

    0x1 计算资源表数据块实际内存地址 由于现在内存缓冲区中的 PE 文件内容并不是通过 Windows PE 文件装载器加载进系统的,所以在计算数据块实际内存地址的时候,不能直接使用 RVA 进行计算。...PointerToRawData 域是该区块基于文件的偏移量,根据该域的值找到该区块数据在文件中的位置。...0x2 解析资源数据块 资源数据是 PE 文件的重要组成部分,包括位图、光标、对话框、图标、菜单、字符串表、工具栏、版本信息等。在 PE 文件所有结构中,资源部分是最复杂的。...该结构体只用来描述在版本信息资源中的数据,并不出现在附带于 SDK 中的任何头文件中。 获取该结构体更多信息请访问文后 0x5 节中的超链接。...需要注意的是,这里的 String 类型并非 C++ 中定义的 std::string 数据类型,而只是 PE 文件结构定义中的一种结构体类型。

    3.3K20

    修改jar包中的文件内容 - Java技术债务

    导引 首先问问为什么要直接修改jar包中的文件,而不是重新打包,在非必要的情况下,不要直接修改jar包,这样容易出事故; 当然也有一些场景不得不修改jar包,比如: 只有jar包没有源码 重新打包流程麻烦...vim命令修改配置文件 使用vim命令修改虽然方便快捷,但是不能修改二进制文件,只能修改未被编码的内容,比如jar中的配置文件等。...jar命令替换jar包中的文件(也可新增) 列出jar包中的文件清单 jar tf xmars-ai-center.jar 提取出内部jar包的指定文件 jar xf xmars-ai-center.jar...修改指定文件 vim ./* . * 重新打包 jar -cfM0 xmars-ai-center.jar ./***/ 运行 java -jar xmars-ai-center.jar...x 从档案中提取指定的 (或所有) 文件 u 更新现有的归档文件 v 在标准输出中生成详细输出

    33510

    为什么SpringBoot jar包中的文件读取不到?

    1 猿与故事 今天的故事发生在程序猿菜菜身上。 凡是对接过三方的都知道,代码中难免要加载很多三方分配的证书等相关配置文件。...菜菜同学每天的工作便是与三方对接,而且这次的任务是接入 N 套证书相关配置文件。考虑到后期易于上线,于是菜菜开启了从硬编码到易维护的代码优化之路。...问题很清晰了,通过上面这种方式获取 SpringBoot 打好的 jar 中的资源文件不太可行,需要换方案。...3 菜菜侃大山 1、如何获取 SpringBoot jar 包中的指定文件夹下的资源文件子目录?...菜菜曰:SpringBoot 没办法通过 File 的形式访问 jar 包里面的文件,借助 resource.getURL().getPath() 获取当前资源对应的URL的路径得以解决。

    1.4K20
    领券