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

使用Java从$PATH获取可执行文件的绝对路径

使用Java从$PATH获取可执行文件的绝对路径可以通过以下步骤实现:

  1. 获取系统的环境变量$PATH的值。
    • 环境变量$PATH存储了一组目录路径,用于指定可执行文件的搜索路径。
    • 在Java中,可以通过System类的静态方法System.getenv("PATH")来获取$PATH的值。
  2. 将$PATH的值按照路径分隔符(在Windows上是分号;,在Linux和Mac上是冒号:)进行拆分。
    • 在Java中,可以使用String类的split()方法来实现拆分,传入路径分隔符作为参数。
  3. 遍历拆分后的路径列表,逐个尝试获取可执行文件的绝对路径。
    • 在Java中,可以使用File类的构造函数传入路径和可执行文件名来创建File对象。
    • 然后,可以使用File类的exists()方法判断文件是否存在,以及isFile()方法判断是否为可执行文件。
    • 如果找到了可执行文件,可以使用File类的getAbsolutePath()方法获取其绝对路径。

下面是一个示例代码,演示如何使用Java从$PATH获取可执行文件的绝对路径:

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

public class ExecutablePath {
    public static void main(String[] args) {
        String path = System.getenv("PATH");
        String[] paths = path.split(File.pathSeparator);

        String executableName = "executable"; // 可执行文件名

        for (String dir : paths) {
            File file = new File(dir, executableName);
            if (file.exists() && file.isFile()) {
                String absolutePath = file.getAbsolutePath();
                System.out.println("可执行文件的绝对路径:" + absolutePath);
                break;
            }
        }
    }
}

请注意,以上代码只是一个示例,实际应用中需要根据具体情况进行适当的错误处理、异常处理和路径拼接等操作。

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

相关·内容

python3 获取当前路径及os.path.dirname的使用

方法一:import sys,osos.getcwd()#然后就可以看见结果了方法二:import osos.path.dirname(os.path.realpath('__file__'))#注意:...添加单引号python中的os.path.dirname(__file__)的使用(1)当"print os.path.dirname(__file__)"所在脚本是以完整路径被运行的, 那么将输出该脚本所在的完整路径...(__file__)"所在脚本是以相对路径被运行的, 那么将输出空目录,比如:             python test.py             那么将输出空字符串python中的os.path.dirname...(path)语法:os.path.dirname(path) 功能:去掉文件名,返回目录  如:print(os.path.dirname('W:\Python_File\juan之购物车.py'))#...结果#W:\Python_Fileprint(os.path.dirname('W:\Python_File'))#结果#W:\

8.3K30
  • Node.js的fs&path模块的使用,获取文件的名称等操作

    /score-ok.txt', 'utf8', function (err, data) { // 使用path.join()方法拼接路径,__dirname代表当前文件夹路径,__filename代表当前文件路径...()获取文件名&&拓展名 */ const filePath = './007-path.basename()方法的使用.js'; // 只传路径,获取到的是带文件拓展名的string const fullName...= path.basename(filePath); // 传入路径、拓展名,得到的是不带拓展名的文件名string const nameWithOutExt = path.basename(filePath..., '.js'); // 获取文件拓展名 const extName = path.extname(filePath) console.log('fullName:', fullName); console.log...()方法的使用.js nameWithOutExt: 007-path.basename()方法的使用 extName: .js 读取文件成功了: 小红: 99 小白: 100 小黄: 70 小黑: 66

    3K30

    【随笔】使用 jpackage 打包 Java 应用程序

    简介 jpackage 是 JDK 14 引入的一个工具,旨在帮助开发者将 Java 应用程序打包成原生的可执行文件,支持 Windows、macOS 和 Linux 平台。...本文将展示如何使用 jpackage 将一个简单的 Java 应用程序打包成可执行文件,包括打包 Windows (.exe),macOS (.app),和 Linux (.deb) 文件的步骤。...--java-options java options> 要传递到 Java 运行时的选项 可以多次使用此选项。...(绝对路径或相对于当前目录的路径) --runtime-image path> 要安装的预定义运行时映像的路径 (绝对路径或相对于当前目录的路径...总结 通过 jpackage,你可以非常方便地将 Java 应用程序打包成平台原生的可执行文件或安装包,无论是 Windows、macOS 还是 Linux。

    12410

    Java 优化:读取配置文件 万能方式 跨平台,动态获取文件的绝对路径

    Java 优化:读取配置文件 "万能方式" 跨平台,动态获取文件的绝对路径 图片 每博一文案 往事不会像烟雾似的飘散,将永远像铅一般沉重地浇铸在心灵的深处。...,可以获取到当前线程的类加载对象 getResource() 获取资源:这是类加载器对象的方法,当前线程的类加载器默认从类的根路径下加载资源。...").getPath(); // 通过该获取的文件的绝对路径创建 字节输入流对象 f = new FileInputStream(path);...").getPath(); // 通过该获取的文件的绝对路径创建 字节输入流对象 f = new FileInputStream(path);...当在J Windows 操作系统中编写的绝对路径的Java程序,移植到到 Linux 操作系统中就会报错。 静态获取的绝对路径 和 动态获取绝对路径。

    78560

    Go语言:如何解决读取不到相对路径配置文件问题

    ) index := strings.LastIndex(path, string(os.PathSeparator)) path = path[:index] 代码分析 os.Args是用来获取命令行执行参数分片的...大致意思就是它会去环境变量中找这个可执行文件的绝对路径,或相对于当前目录的路径。...意思是它会根据传入的路径计算出绝对路径,如果传入的为相对路径,那么它会把当前路径拼接上 此时返回的path是一个包含可执行文件在内的完整路径,我们只需要精确到目录即可 index := strings.LastIndex...这样就完成了目录的获取,接下来再拼接上我们实际的配置文件就可以了 番外 发现不调用exec.LookPath也是可以达到查询绝对路径的目的的,那么exec.LookPath还有什么用?...path[:index] 我们来看一下源码,exec.LookPath的作用是从相对路径或环境变量PATH中递归找可执行文件,这起着一个校验的作用,检测调用的可执行文件是不是真的存在,如果存在再继续往下拼接出绝对路径

    7.9K20

    windows系统是如何执行用户命令的?

    一直以来,有一个疑问,在windows系统CMD下输入命令,如:javac,熟悉java的人都知道,这是将.java文件编译成.class文件,那么系统是如何找到可执行文件(.exe结尾)的呢?...比如说java虚拟机安装后,都需要在系统环境变量中配置好java虚拟机的安装路径,也就是JAVA_HOME,一般都是指向jdk的bin目录,因为jdk的可执行文件都放在bin目录下,如下图所示: [image.png...] 当用户在CMD下输入命令:javac时,windows会按以下步骤执行搜索: 检测用户输入的命令是否是绝对路径,如果是绝对路径,那么就会在该路径中查找javac.exe文件 如果不是绝对路径,那么就会在当前命令行所指向的路径中查找...java也是如此,细想下每次装完JDK后,都需要去环境变量中增加变量JAVA_HOME,CLASSPATH,还有就是在PATH路径中增加一句:%JAVA_HOME%\bin,JAVA_HOME指向的是JDK...安装根目录下的bin目录,通过以上可知,操作系统CMD全局识别命令,是通过搜索环境变量PATH(系统和用户PATH),如果在环境变量PATH中配置了可执行文件路径(或者批处理文件路径),那么系统就可以在

    87220

    三种获取Go项目根目录的方式,让你做架构,选哪种?

    今天就总结一下在 Go 程序里边怎么获取项目的根目录绝对路径。...os.Getwd os.Getwd() 方法,Go 语言os包的Getwd函数能够获取进程的当前工作目录,其实从函数名字中的wd—working directory (工作目录)的缩写,差不多就能猜出来它的功能...所以os.Getwd()这个方法获取的是进程在OS系统所在的目录,仅当在可执行文件所在的目录下启动程序的情况下才能正确拿到 Go 项目的根目录,这种情况还是不够通用的,需要与运维约定项目的启动命令才行。...示例程序里之后的两个方法调用会帮我们找到可执行文件所在目录的绝对路径。...从Go log库到Zap,怎么打造出好用又实用的Logger 用它再推断出项目的根目录即可 root := path.Dir(path.Dir(filename)) 用这种方法改造代码后,我们再用上面的几种启动方式

    3.5K10

    Linux之which命令

    which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔的指向包含可执行文件的目录的绝对路径的列表组成。...要查看PATH变量的内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/bin...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令的两个完整路径: /usr/bin/touch /bin/touch 原文链接:https://rumenz.com

    1.2K00

    Linux之which命令

    which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔的指向包含可执行文件的目录的绝对路径的列表组成。...要查看PATH变量的内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/bin...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令的两个完整路径: /usr/bin/touch /bin/touch 原文链接:https://rumenz.com

    57320

    Linux之which命令

    which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔的指向包含可执行文件的目录的绝对路径的列表组成。...要查看PATH变量的内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/bin...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令的两个完整路径: /usr/bin/touch /bin/touch [wx.jpg]

    59800

    Linux之which命令

    which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔的指向包含可执行文件的目录的绝对路径的列表组成。...要查看PATH变量的内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令的两个完整路径: /usr/bin/touch /bin/touch 原文链接:https://rumenz.com

    56710

    「JAVA」从语法到案例,从定义到使用,详细解释Java 内部类的完全实现

    内部类 Java 类中的可以定义的成员有:字段、方法、内部类,内部类是定义在类结构中的另一个类,因为定义在类的内部,故称为内部类。...在Java中的LinkedList的源码中,使用一个内部类Node来封装链表列表中的每一个节点,在节点中存储了当前节点的值,上一个节点,下一个节点这些信息;而这些信息是不能外部对象直接读取和使用的,因此...内部类的分类:内部类根据使用的修饰符的不同,或者定义的位置的不同,分成四种类型; 实例内部类:内部类没有使用static修饰,也就是非静态内部类,定义在类中,方法之外; 静态内部类:内部类使用了static...; 局部内部类访问的局部变量必须使用final修饰,在Java 8中是自动隐式加上final,但是依然是常量,值不能被改变; 为什么不推荐使用局部内部类?...关注我,获取更多编程科技知识。

    77750

    【Android 应用开发】Android 上实现非root的 Traceroute -- 非Root权限下移植可执行二进制文件 脚本文件

    即 /data/data/包名/files/下; 修改文件权限 : 使用命令可以直接修改该目录下的权限, 注意这个操作是可以执行的; 执行busybox : 在代码中执行 ....使用到的api解析 (1) 获取 assets 目录文件的输入流 InputStream is = context.getAssets().open(source); -- 获取AssetsManager...: 调用 Context 上下文对象的 context.getAssets() 即可获取 AssetsManager对象; -- 获取输入流 : 调用 AssetsManager 的 open(String...); is.close(); 将文件写到内存中 : 调用上下文对象的 openFileOutput(绝对路径名, 权限), 即可创建一个文件的输出流; FileOutputStream output =...context.openFileOutput(destination, Context.MODE_PRIVATE); output.write(buffer); output.close(); (3) 获取文件的绝对路径

    49220

    Java中InetAddress的使用(二):获取本机IP地址的正确姿势【享学Java】

    前言 本文接着上文的内容,主要解答上文留下的疑问:既然不能使用InetAddress#getLocalHost()直接去获取到本机的IP地址,那么如何破呢?...本文将会演示它在windows上(本机)以及Linux下运行的案例,会有差异,请注意区分。 ---- 直接使用getLocalHost()获取本机IP的错误示例 标题已经很明显指出了:这是错误示例。...为何在Linux下请你一定不要使用它来获取本机IP,因为它就是简单的读取/etc/hosts的内容,所以它默认返回的是127.0.0.1非常的不靠谱,因此本方法十分不建议在生产上使用。...public boolean isReachable(int timeout); //可以指定从本机那个网卡、生存时间ttl 和指定时间来测试网络是否可达。...public boolean isMCOrgLocal(); ---- 总结 关于InetAddress的所有内容就介绍到这,相信经过此两篇内容的讲解后,你对Java处理域名解析,以及获取本地IP地址时将不会再胆怯

    17.5K76

    后端 | Java 利用substring()和indexOf()从字符串中获取指定的字符

    的前6个字符后,“/”第一次出现的下标。.../*第二种情况:不知道字符下标,但是知道分割字符是“/”,可以用indexOf()获取字符“/”下标*/ // 第二种情况我们获取id->id1 String...id = str.substring(0, str.indexOf("/")); /*善于思考的同学已经发现,第二种情况我们只能获取id,想拿后面其他数据就很难办了,因为我们有两个“.../”,因此就有了第三种情况*/ /*第三种情况:str中有多个相同字符,我们要跳过前几个字符获取后面的数据*/ // 第三种情况我们想获取Riven,但是我们不知道Riven...”之间的数据就是我们的name字段了 // indexOf()可以传两个参数,第一个是要寻找的子字符串,第二个是从哪个下标位置开始寻找,这里传入i+1就是跳过了第一个“/”之前的下标

    3.2K40
    领券