Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为可从Java代码执行的Groovy脚本设置属性?_Java_Groovy - Fatal编程技术网

如何为可从Java代码执行的Groovy脚本设置属性?

如何为可从Java代码执行的Groovy脚本设置属性?,java,groovy,Java,Groovy,在Groovy脚本中,我有以下代码: def username = System.getenv()['USER'] def password = System.getenv()['PASS'] 这是因为我不能将此信息用作Groovy脚本的参数,因为其他用户不应该知道它。当我运行这个脚本时,我在我的系统中设置了这个参数。现在我有一个问题。我有一个远程运行Groovy脚本的Java应用程序。有什么方法可以在Java代码中设置环境变量吗?(我发现这是不可能的)。或者,是否有一些安全的方法将此属性从J

在Groovy脚本中,我有以下代码:

def username = System.getenv()['USER']
def password = System.getenv()['PASS']

这是因为我不能将此信息用作Groovy脚本的参数,因为其他用户不应该知道它。当我运行这个脚本时,我在我的系统中设置了这个参数。现在我有一个问题。我有一个远程运行Groovy脚本的Java应用程序。有什么方法可以在Java代码中设置环境变量吗?(我发现这是不可能的)。或者,是否有一些安全的方法将此属性从Java发送到Groovy?

如果您是以
Runtime.exec
的最低公分母(或类似公分母)启动Groovy脚本,则可以在以下位置指定环境:

在具有指定环境的单独进程中执行指定的字符串命令

envp
-字符串数组,其中每个元素的环境变量设置格式为name=value,如果子流程应继承当前流程的环境,则为null

另一方面,如果您在同一个Java进程中调用Groovy脚本,那么它将具有与正在运行的进程相同的属性。因此,在调用Groovy脚本之前只需调用
System.setProperty(“USER”,xxx)
,就意味着Groovy逻辑可以看到该属性


您应该注意,环境是一个操作系统级别的东西;对运行进程的操作系统的属性的度量


如果您正在查找应用程序级设置,那么您确实应该检查
System.properties

您所说的“…远程运行groovy脚本的”是什么意思?Java如何运行groovy脚本?另外,在系统环境中设置用户名/密码意味着您一次只能运行一个用户?请看这里:我在应用程序服务器上有一个web应用程序,使用此代码,所以。。。然后,您没有远程运行它,您只是在运行它…我尝试使用:System.setProperty,然后调用这个变量:System.getenv()['USER'],但没有success@hudi-刚刚注意到您正在检查环境中的应用程序设置。这根本不是正确的做法,您应该检查系统属性。(环境基本上是“Windows是如何设置的?”,这是可以理解的,应用程序无法修改。)我不能使用systemProperty,因为在我的问题中提到的文章中,可以使用命令行将这些设置为:-Dpropertyname=我不想要的值如果要为Groovy脚本设置属性,然后您应该让Groovy脚本检查系统属性。如果它要检查环境变量,那么你需要更改操作系统的环境变量(你不能通过编程来完成)——就这么简单。