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则不遵循。
相关推荐
在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。
发表于 02-16 10:34
•227次阅读
我在我的系统环境变量 PATH 路径中添加了 cubeIDE gnu 工具和 make 工具。export PATH="/opt/st/stm32cubeide_1.3.0
发表于 02-03 06:00
。环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当前用户所运行 的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。
发表于 01-29 10:55
•60次阅读
在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,常见的环境变量有HOME,SHELL,PATH等等。
发表于 01-18 16:10
•893次阅读
请教大神怎样去更改环境变量RLM_LICENCE呢?
发表于 12-22 07:56
在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。
发表于 12-05 09:25
•359次阅读
最近烧写mmc,发现uboot内saveenv命令丢失,导致环境变量无法设置,请教了......md- memory displaymii- MII utility commandsmm-
发表于 12-05 06:35
主机架构:win7-64虚拟机:vmware14Linux:ubuntu12.04问题:在设置环境变量时,执行
发表于 11-30 06:35
在启动uboot后进入u-boot模式更改环境变量:mmcroot=/dev/mmcblk3p2 rootwait rw更改完成后重启又变回未更改之前的设置,这是什么原因啊?
发表于 11-28 07:15
Module是一款环境变量管理工具,北鲲云超算平台安装了许多公共软件,通过module实现软件环境变量的管理,快速加载和切换软件环境。用户只需加载模块即可使用平台的软件或依赖库。
发表于 11-21 16:57
•530次阅读
Linux 是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义, 这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。
发表于 11-21 11:43
•191次阅读
Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。
发表于 11-14 12:01
•174次阅读
请问高手,modelsim和modelsim-altera同时安装如何设置环境变量?谢谢!
发表于 10-18 14:29
最近在学习zynq的Linux开发,在移植uboot和Linux内核设置环境变量时报的错误,没有这个指令,网上搜了很多都没有解决办法,有没有人知道啊,求教。
发表于 08-29 22:29
sd卡启动我的arm开发板。那uboot的环境变量我修改后下次重启,会变化吗?我发现,貌似这个uboot环境变量修改保存是会被写入nandflash
发表于 07-26 14:50
大家都知道,在 Linux 系统中,有环境变量和 Shell 变量这两种变量。环境变量是在程序及其子程序中全局可用的,常常用来储存像默认的文本编辑器或者浏览器,以及可执行文件的路径等等这样的信息。而
发表于 06-14 16:21
修改环境变量修改环境变量的方法有几种,这里给大家介绍常用的俩种方法。举例:把 /home/topeet/路径加到 PATH 变量里面去第一种方法: 直接使用命令设置命令格式: export 变量
发表于 04-28 16:07
python私有变量和私有方法1. 下划线妙用在 Python 中,下划线可是非常推荐使用的符号:变量名推荐使用下划线分隔的蛇形命名法魔法方法、构造函数都需要使用双下划线对于暂时用不到的变量值,可以
发表于 03-08 16:30
RK3288 android7.1.2内核是怎样更改uboot环境变量的?有哪些步骤呢?
发表于 03-03 07:58
请问RK3288 android7.1.2如何在uboot源码中添加、获取环境变量?
发表于 03-03 07:33
RK3288 android7.1.2内核如何更改uboot环境变量?
发表于 03-03 06:08
源码包在设置环境变量时,在执行. /home/forlinx/imx8mm/OKMX8MM-SDK/environment-setup-sourcetree语句之后,显示没有那个文件或目录。
发表于 12-30 07:52
、ninja、LLVM编译工具。安装gn、ninja、LLVM编译工具时,请确保编译工具的环境变量路径唯一。获取源码开发者需要在Linux服务器上下载并解压一套源代码,请参见源码获取。安装必要的库和工具使用如下
发表于 12-08 17:36
OpenHarmony_v1.x分支/标签需要)安装hb 前提条件安装方法卸载方法系统要求:Ubuntu16.04及以上64位系统版本。编译环境搭建包含如下几步:获取源码安装必要的库和工具安装python3安装
发表于 12-08 14:34
系统已经把命令的搜索路径提前设置好了。常用变量 PATH 决定了要去哪个路径下去寻找我们的程序或者命令, 在以后的开发过程中, 我们要经常修改这个变量。2 修改环境变量修改环境变量的方法有几种,这里给
发表于 11-30 12:27
bootloader的管理,有时需要将bootloader本身和环境变量分开来保存,这样更方便管理。那么如何来制作一个环境变量的镜像呢?之前有在网上搜索,但是没有找到完整切详细的制作环境变量镜像的文章或者教程,因此
发表于 11-05 07:00
bootloader的管理,有时需要将bootloader本身和环境变量分开来保存,这样更方便管理。那么如何来制作一个环境变量的镜像呢?之前有在网上搜索,但是没有找到完整切详细的制作环境变量镜像的文章或者教程,因此
发表于 11-02 10:35
•8次下载
如何创建不同环境变量文件?
发表于 10-25 08:44
dosfstools、mtools、mtd-utils文件打包工具通过apt-get install安装Java 虚拟机环境编译、调试和运行Java程序通过apt-get install安装安装
发表于 08-19 11:36
、ninja、LLVM编译工具。安装gn、ninja、LLVM编译工具时,请确保编译工具的环境变量路径唯一。获取源码开发者需要在Linux服务器上下载并解压一套源代码,请参见源码获取。安装和配置Python
发表于 08-19 11:10
安装STM32CubeMX需要JAVA开发环境,可以在官网下载也可以在我提供的网盘链接下载:地址:安装过程不细说了,直接一路next撸到底就行了,也不需要添加环境变量,很简单。安装STM32CubeMX。直接进入ST官网,搜索STM32cubeMX即可,这里直接给出网址
发表于 08-17 07:44
请问cadence ic安装完了以后,启动icfb&时候提示:command not found是说明环境变量路径不对么?请问启动了cadence以后我想验证drc或者lvs,没有calibre选项,在verify下试了下都没成功,是不是说明mentor没集成好啊?
发表于 06-22 06:02
来修改一下环境变量。右键单击“我的电脑”,进入“属性”,如图 87.2.2,单击“高级系统设置”。如图 87.2.3,打开环境变量设置窗口。在后面添加环境变量“C:\Program Files
发表于 05-10 10:51
Compose有多个部分以一种或另一种方式处理环境变量。 在compose文件中替换环境变量,可以在外壳中使用环境变量来填充Compose文件中的值: web: image: “webapp
发表于 02-16 09:58
•3026次阅读
本帖最后由 l_xy 于 2020-10-18 18:34 编辑
HiSpark AI Camera U-boot环境变量U-boot环境变量可以理解为全局变量,在U-boot运行和调试中发
发表于 09-24 18:15
的时序参数。根据 LCD手册计算相应的时序值填入相应的文本框中,即可生成相应的环境变量,环境变量的使用方法与设置引脚功能相同,粘贴到uboot命令行保存即可。1.4 环境变量编辑AM335x 平台的默认
发表于 08-14 16:12
Windows10JDK环境变量配置
发表于 06-17 06:31
linux设置环境变量有以下三种方式
发表于 06-15 09:05
•1065次阅读
。我打开批处理文件,我希望它在%VIVADO_VER%失败,因为没有变量,它无法找到下的可执行文件C:\赛灵思\ Vivado \ 2016.4 \ ....我需要为vivado工具和SDK设置的所有环境变量是什么?我怀疑这是因为我们的IT部门阻止了下载管理器的正常安装,我们不得不进行特殊安装
发表于 05-25 07:41
请教一下我的DBC除了Vecrot_IL_Basic Template.dbc模板有环境变量,但是右键以后NEW不能新建,其他模板都没有环境变量,这个怎么解决?
发表于 02-08 20:06
本文档的主要内容详细介绍的是Java Script的编码规范详细说明。
发表于 01-10 17:17
•6次下载
本文档的主要内容详细介绍的是LED流水灯与变量的移位教程详细说明包括了:流水灯—分步赋值法(数组赋值),流水灯—变量的左移和右移,流水灯—变量的循环左移和右移。
发表于 12-06 17:11
•23次下载
Bash环境变量的理解与运用初学者可以在此教程中了解环境变量。bash 变量,尤其是讨厌的环境变量,已经是一个老生常谈的话题了。我们也更应该对它有一个详细的了解,让它为我们所用。 下面就打开终端
发表于 11-01 15:13
原先做DM9000移植的时候都是成功的,但是在做环境变量和裁剪的时候就出了这个问题,设置成nandflash保存网卡的环境变量就会报这个错,norflash不会报错U-Boot 2016.01
发表于 09-20 00:10
本文档的主要内容详细介绍的是如何搭建寄存器的工程环境详细方法步骤说明。
发表于 09-19 08:00
•0次下载
此处介绍 U-boot 环境变量初始化的两种方式 ,方式 1 与 方式 2 。
发表于 09-16 10:36
求助:环境变量无法保存。Saving Environment to NAND...Erasing Nand...nand_erase: attempt to erase a bad block at page 0x00000080nand 启动和nor启动都是这个问题,求帮忙解答。
发表于 09-02 05:14
以Windows7为例,在桌面计算机上右击,选择属性,打开属性对话框,在左列快速列表中点击高级系统设置(要求有管理员权限),打开系统属性对话框,在高级选项卡中点击环境变量按钮,打开环境变量对话框。在
发表于 08-30 17:28
•2次下载
uboot中 执行save命令无法保存环境变量执行set bootargs console=ttySAC0,115200 root=/dev/mtdblock3执行 save 命令提示
发表于 07-31 02:19
环境变量一般是指操作系统中指定操作系统运行环境的一些参数。它相当于一个指针,想要查看变量的值,需要加上“$”。
发表于 07-25 07:59
1.为什么要配置环境变量? PATH环境变量-指定命令路径。例如我们敲javac Hello.java ,它会到PATH下面的路径找相应的命令执行命令。如果PATH没有该指令路径,我们就只能cd 到
发表于 07-16 07:58
用户可以在Profile文件中加入环境变量,比如JAVA_HOME,PATH...这样重新登录之后,这些环境变量都会得以设置,不用每次都手工设置。
发表于 07-12 06:24
本文档的主要内容详细介绍的是如何建立MPLAB和Proteus的联调开发环境详细方法说明。
发表于 07-11 16:45
•22次下载
在数码相框的项目中,我在/etc/init.d/rcS文件中加入了挂载模块命令和环境变量配置命令,启动开发板后,发现模块已经挂载上去,但是运行命令 ./digitauto ./MSYH.TTF 后
发表于 06-12 05:45
MongoDB设置环境变量与设置成Windows服务
发表于 05-06 07:55
本文档详细介绍的是Visual C++程序设计教程之属性单和属性页的详细资料说明主要内容包括了:1 属性单和属性页相关类,2 创建属性单和属性页程序,3 创建向导属性单应用程序
发表于 03-04 16:21
•4次下载
jdk-7u60-linux-i586.gzC) 设置环境变量export JAVA_HOME=/home/when/work/java/jdk1.7.0_60export JRE_HOME=${JAVA
发表于 01-15 12:02
本文档的主要内容详细介绍的是如何在麒麟系统上安装Java环境指南的详细资料说明1、介绍 请以root用户在系统桌面上运行。
发表于 01-10 16:21
•8次下载
,需要配置环境变量。WIN10系统可跳过此步。在计算机——>属性——>高级系统设置——>系统属性中,“高级”选项卡下,增加环境变量。新建环境变量在此新建两个环境变量。1.变量
发表于 11-26 21:18
settings64.sh脚本没有正确获取脚本位置,它最后留下脚本文件名。快速解决方法是应用以下补丁:@@ -18,7 +18,7 @@ if [“$ XIL_SCRIPT_LOC_TMP_UNI”!=“”];那么
发表于 11-26 15:05
“未设置环境变量。需要安装ise工具的comptabile verision来运行xps 按Enter键关闭“我使用ise12.1套件,当我打开xps时,我该怎么做才能解决问题?以上来自于谷歌翻译
发表于 11-16 11:34
我们想要运行python,需要安装Python,还要设置一些环境变量1,此电脑,右键属性2、高级系统设置-> 环境变量3、在系统变量中找到path,双击它,在分号后面添加python的软件安装目录4、找到window PowerShell5、输入python 会显示软件的版本,就设置完毕了
发表于 11-10 14:49
•559次阅读
使用档案文档或设备,通常必选。4.配置环境变量sudo gedit ~/.bashrc打开后在最后添加:export JAVA_HOME=/usr/lib/Java/jdk1.7.0_55 export
发表于 09-27 09:48
在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challenges中使用到一些的技术。话不多说,让我们进入正题!
发表于 07-05 09:50
•4719次阅读
本文详细介绍了Java开发环境的搭建以及使用eclipse从开始一步步创建Java项目。1.首先安装JDK,接下来需要配置环境变量,配置path变量等,详情请看下文
发表于 02-01 14:20
•2863次阅读
怎么在linux环境下搭建java web测试环境呢?1.配置java环境(下载jdk并配置环境变量),2.下载并安装tomcat (设置tomcat编码),3.安装mysql并导入sql(注意
发表于 01-31 18:14
•4848次阅读
安装python之后,我们往往面临这样一个问题,在命令行输入“python”,竟然出错,难道是没有安装成功吗?非也,其实是你的系统环境变量没有设置好。今天,小编就来带大家学学python怎么设置环境变量
发表于 11-20 11:47
•1981次阅读
/etc/bashrc脚本。至此,所有的环境变量和初始化设定都已经加载完成. bash随后调用terminfo和inputrc,完成终端属性和键盘映射的设定.其中PATH这个变量特殊说明一下: 如果是超级
发表于 10-09 15:55
Java环境变量配置
发表于 07-24 11:39
•0次下载
最近在xilinx的板子上移植Qt,用到了官方的ramdisk,所以在文件系统中做出相应的修改不能保存,因此在保存在TF卡下的开机启动脚本init.sh中进行配置Qt的环境变量,开机后rcS脚本启动
发表于 07-03 09:43
配置更改,环境变量的配置方法为:我的电脑->属性->高级系统设置->环境变量,打开后在path变量下添加变量值,变量值为java的安装目录,并新建变量JAVA_HOME,变量值也为
发表于 06-19 08:24
在开始正式使用PetaLinux工具之前,在Linux系统下配置PetaLinux环境变量是很重要的。 首先需要确认系统默认shell是否为bash:[host] $ echo $SHELL 如果
发表于 12-07 19:01
,利用迅为提供工具和详细的使用步骤,搭建编译环境;另外一种方法是用户安装虚拟机,然后直接加载“搭建好的Ubuntu镜像”,用户只需要修改一下编译器的环境变量,就可以直接用来编译源码。以下详细讲解如何搭建
发表于 06-22 14:25
C语言教程之获取环境变量,很好的C语言资料,快来学习吧。
发表于 04-25 17:07
•11次下载
新的shell时,该该文件被读取。PASH环境变量的设置方法:1 用户主目录下的.profile或.bashrc文件(推荐)登录到你的用户(非root),在终端输入:$ sudo gedit
发表于 11-28 22:03
最近学linux发现视频里要修改的环境变量和我电脑实际的很不一样,新手的我表示不会了。安装好了arm-linux-gcc交叉编译器但是不会配置环境变量。求大神帮我改一下。以下是电脑中的代码
发表于 09-09 18:20
u-boot下配置的环境变量不小心敲错了保存后怎么删除啊,比如serverip这个单词拼错后。。。。
发表于 08-13 10:18
求助!在cadence16.3安装之前有哪些环境变量是需要设置的?如何设置?谢谢!
发表于 09-21 15:23
\common下完全没有lib文件夹 这个文件夹是安装PB5.0的时候就应该产生的吧?为什么我没有呢。 Q2:_CPUINDPATH这个环境变量是什么意思我在命令行中 输入 SET 查看环境变量但是完全没有找到关于这个的设置 弟弟我头都想大了求求各位帮我看看 是什么原因好吗
发表于 07-02 16:07
PRO\E4.0安装方法 第一步:修改环境变量. 我的电脑----属性---高级---环境变量---新建---变量名:lang 值:chs (注:下载好的PRO/E有CD1 CD2 CD3 crack4.0) 第二步、许
发表于 11-04 16:56
•1353次下载
Allegro环境变量:Allegro 是一套功能强大,但相对的也是一套相当复杂的系统,它提供许多的专属环境变量供使用者设定,让使用者可以自订一个专属于自己的Allegro 操作环境,让整个
发表于 08-21 22:43
•209次下载
JAVA语言的变量和常量变量 变量是用来存放指定类型的数据,其值在程序运行过程中是可变的。按变量定义的位置Java的变量分为两种:类属性变量和局部变量。局部变量是方法中定义的
发表于 12-06 00:22
下是一些Applet的实例。配置环境变量过程如下:从桌面上选择“我的电脑”(右键)→“属性”→“高级”→“环境变量”,进入环境变量对话框,在其中选择“系统变量”的“新建”;在变量名中输入classpath
发表于 12-06 00:19
C 和 C++实现的; jre:Java 运行环境; lib:library 的简写,JDK 所需要的一些资源文件和资源包。 第三步:配置环境变量
发表于 10-30 12:43
评论