0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Java获取属性和环境变量详细方法说明

Wildesbeast 来源:今日头条 作者:编程life 2020-02-24 13:09 次阅读

1.简介

Java应用程序中,Java将自动导入包java.lang, 包含从NullPointerException到Object,Math和String的许多常用类。

java.lang.System中的类是 final 类,也就是说,我们不能继承它,因此,所有的方法都是静态的。

我们研究读取系统属性和环境变量的两种System方法之间的区别。

这些方法是getProperty和getenv。

2.使用System.getProperty()

Java平台使用Properties对象提供有关本地系统和配置的信息,我们将其称为System Properties。

系统属性包括诸如当前用户,Java运行时的当前版本以及文件路径名分隔符之类的信息。

在下面的代码中,我们使用System.getProperty(“ log_dir”)读取属性log_dir的值。我们还使用默认值参数,因此,如果该属性不存在,则getProperty返回 "/tmp/log":

String log_dir = System.getProperty("log_dir","/tmp/log");

要在运行时更新系统属性,可以使用System.setProperty 方法 (尽量不要使用):

System.setProperty("log_dir", "/tmp/log");

我们可以使用propertyName命令行参数将自己的属性或配置值传递给应用程序,格式为

java -jar jarName -DpropertyName=value

在app.jar中将foo的属性设置为bar值:

java -jar app -Dfoo =“ bar”

System.getProperty将始终返回String。

3.使用System.getenv()

环境变量是键/值对和 Properties 一样。许多操作系统使用环境变量来允许将配置信息传递到应用程序中。

设置环境变量的方式因操作系统而异。在Windows中,可以从控制面板使用System Utility应用程序,而在Unix中,可以使用shell脚本。

创建进程时,默认情况下,它会继承其父进程的克隆环境变量。

以下代码段显示了使用lambda表达式打印所有环境变量。

System.getenv().forEach((k, v) -> { System.out.println(k + ":" + v);});

getenv() 返回一个只读Map。尝试向地图添加值会抛出 UnsupportedOperationException。

要获取单个变量,请使用变量名称调用getenv:

String log_dir = System.getenv("log_dir");

另一方面,我们可以从应用程序中创建另一个进程,并将新变量添加到其环境中。

要使用Java创建新流程,我们使用ProcessBuilder类,通过 environment 方法可以添加自定义的环境变量

ProcessBuilder pb = new ProcessBuilder(args);Map env = pb.environment();env.put("log_dir", "/tmp/log");Process process = pb.start();

4.差异

尽管两者本质上都是为String键提供String值的映射,但让我们看一些区别:

当环境变量是操作系统变量的不可变副本时,我们可以在运行时更新属性。

属性仅包含在Java平台内,而环境变量在操作系统级别是全局的-可供同一计算机上运行的所有应用程序使用。

打包应用程序时,属性必须存在,但是我们几乎可以在任何时候在操作系统上创建环境变量。

5.结论

尽管在概念上相似,但是属性和环境变量的应用都非常不同。

选择哪一个通常是范围的问题。使用环境变量,可以将同一应用程序部署到多台计算机上以运行不同的实例,并且可以在操作系统级别甚至在云控制台中进行配置。无需重建应用程序即可更新配置。

始终记住,getProperty遵循驼峰式约定,而getenv则不遵循。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    3

    文章

    3524

    浏览量

    88391
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104522
  • UNIX
    +关注

    关注

    0

    文章

    296

    浏览量

    41409
收藏 人收藏

    评论

    相关推荐

    Linux环境变量总结

    Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量
    发表于 11-14 12:01 365次阅读

    Linux环境变量配置的6种方法

    在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法
    发表于 12-05 09:25 1336次阅读

    Linux环境变量的配置方法

    在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法
    发表于 09-27 09:50 286次阅读

    python环境变量的配置pip

    Python环境变量的配置和使用是每个Python开发者都需要了解和掌握的基本技能之一。在本文中,我们将详细介绍如何正确配置Python环境变量,并展示一些常见问题的解决方法。我们将从
    的头像 发表于 12-15 15:41 2346次阅读

    Allegro环境变量

    Allegro环境变量:Allegro 是一套功能强大,但相对的也是一套相当复杂的系统,它提供许多的专属环境变量供使用者设定,让使用者可以自订一个专属于自己的Allegro 操作环境,让整个
    发表于 08-21 22:43 0次下载

    C语言教程之获取环境变量

    C语言教程之获取环境变量,很好的C语言资料,快来学习吧。
    发表于 04-25 17:07 0次下载

    Java环境变量配置

    Java环境变量配置
    发表于 07-24 11:39 0次下载

    python设置环境变量

    我们想要运行python,需要安装Python,还要设置一些环境变量1,此电脑,右键属性2、高级系统设置-> 环境变量3、在系统变量中找到path,双击它,在分号后面添加python的
    发表于 11-10 14:49 875次阅读

    嵌入式Linux环境变量分区制作

    bootloader的管理,有时需要将bootloader本身和环境变量分开来保存,这样更方便管理。那么如何来制作一个环境变量的镜像呢?之前有在网上搜索,但是没有找到完整切详细的制作环境变量
    发表于 11-02 10:35 8次下载
    嵌入式Linux<b class='flag-5'>环境变量</b>分区制作

    LINUX环境变量总结

    Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量
    发表于 01-29 10:55 419次阅读

    6种Linux环境变量的配置方法

    在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法
    的头像 发表于 02-16 10:34 1556次阅读

    idea要配置java环境变量

    配置Java环境变量是在安装Java Development Kit(JDK)的过程中的一项重要任务。环境变量是为了方便在命令行或脚本中使用Java
    的头像 发表于 12-06 14:02 721次阅读

    ros怎么设置环境变量

    设置ROS环境变量是使用ROS的重要步骤之一。本文将详细介绍如何设置ROS环境变量,包括什么是环境变量、为什么要设置ROS环境变量、如何设置
    的头像 发表于 12-28 13:52 1942次阅读

    Linux环境变量配置方法

    想必大家平时工作中也会配置Linux的环境变量,但是可能也仅仅是为解决某些工具的运行环境,对于Linux环境变量本身的配置学问还没深入了解。今天浩道跟大家分享Linux环境变量的硬核干
    的头像 发表于 01-04 09:51 502次阅读

    Linux环境变量配置方法

    Linux上环境变量配置分为设置永久变量和临时变量两种。环境变量设置方法同时要考虑环境Shell
    的头像 发表于 10-23 13:39 111次阅读