为什么Java使用System.getenv()获取刚刚设置的环境变量时为空

场景:

在Ubuntu下已经启动了Eclipse,然后通过终端设置了环境变量(export $ENV=123),然后通过System.getenv()获取时显示为空。

解释:

环境变量仅在进程树下方,并且只有在进程启动时。Eclipse是您的Shell的子进程 - 因此,当您启动Eclipse时,它继承了您的Shell上定义的所有环境变量。

您可能在启动Eclipse之后在Shell上定义了环境变量,因此,Eclipse及其创建的Java子进程不了解您的新环境变量。

由于这个行为,实际上这里的解决方案是退出Eclipse并从Shell重新启动它,而环境变量之前定义。另一个选择是转到项目的运行配置并在其中定义环境变量。

参考:

https://stackoverflow.com/questions/29782467/system-getenv-returns-null-when-the-environment-variable-exists

时间: 2024-11-13 04:29:13

为什么Java使用System.getenv()获取刚刚设置的环境变量时为空的相关文章

java中System.getenv和System.getProperties的区别

System.getenv获取的是系统的环境变量(就是用户在操作系统中设置的环境变量),windows和linux下环境变量的设置就不说了哦. System.getProperties获取的是系统的相关属性.在java api文档中已经列出了如下属性 如果我们要在java程序启动就能获取自定义的系统属性我们可以使用 java –Dname=zhuhui 这样我们就在系统属性中设置了名称为myname值为zhuhui的系统属性,那么就可以通过System.getProperty("name&quo

java 通过System.getProperties()获取系统参数

1.java的System.getProperty()方法可以获取的值 java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java.vm.specification.vendor Java 虚拟机规范供应商 java.vm.specification.name

java中获取系统属性以及环境变量

java中获取系统属性以及环境变量 System.getEnv()和System.getProperties()的差别 从概念上讲,系统属性 和环境变量 都是名称与值之间的映射.两种机制都能用来将用户定义的信息传递给 Java 进程.环境变量产生很多其它的全局效应,由于它们不仅对Java 子进程可见,并且对于定义它们的进程的全部子进程都是可见的.在不同的操作系统上,它们的语义有细微的区别,比方,不区分大写和小写.由于这些原因,环境变量更可能有意料不到的副作用.最好在可能的地方使用系统属性.环境变

Java获取系统属性及环境变量

当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的变量与属性,getenv方法返回的变量大多于系统相关,getProperty方法返回的变量大多与java程序有关. 系统属性和环境变量都是名称与值之间的映射.两种机制都能用来将用户定义的信息传递给 Java进程.环境变量产生更多的全局效应,因为它们不仅对Java子进程可见,而且对于定义它们的进程的所有子进程都是可见的.在不同的操作

postman实现从response headers中获取cookie,并将其设置为环境变量

1.最近在学习postman的使用方法,为了保证后续模块操作,必须在登录时获取的session值,并将其设置为环境变量,session的位置处于response headers里面返回的set-cookie参数,并且将set-cookie中的session通过split方法截取出来. 写法: 1.先获取响应头中的set-cookie字段 2.用spilt方法将其分割成数组 3.然后将需要取的值设置到环境变量中 这样后面的就可以于前面的请求沿用同一个cookie 以上纯属个人实例,有描述的不到位的

c# 获取相对路径,操作环境变量.

c# 获取相对路径,操作环境变量. 一.获取当前文件的路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName // Get the current directory. string path = Directory.GetCurrentDirectory(); 获取模块的完整路径,包括文件名. 2. System.Environment.CurrentDirectory 获取和设置当前目录(该进程从中启动

python 设置linux环境变量

在linux上设置临时环境变量: export PGPASSWORD = 'postgres' 若用python实现,错误的方法: os.system("export PGPASSWORD='postgres'") 正确的方法: os.environ['PGPASSWORD'] = 'postgres' 版权声明:本文为博主原创文章,未经博主允许不得转载.

1.4.2 设置PATH环境变量

前面已经介绍过了,编译和运行java程序必须经过两个步骤. 1.将源文件编译成字节码. 2.解释执行平台无关的字节码程序. 上面这两个步骤分别需要使用java和javac两个命令.启动Windows操作系统的命令行窗口(在"开始"菜单里运行cmd命令即可),在命令行窗口里依次输入java和javac命令,将看到如下输出: C:\Users\Administrator>java 'java' 不是内部或外部命令,也不是可运行的程序 或批处理文件. C:\Users\Administ

大波Java来袭(一)JDK安装与环境变量的配置

一.基础知识 (一)什么是Java? Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称. (二)什么是JDK?   学习Java编程时,首先要做的就是搭建开发环境.就像师傅在修车之前,需要搭建一个修车厂,准备好修车所需要的环境和工具一样.这里呢?!Java的开发环境就是JDK,是Java Development Kit的缩写,意思是