2012-07-31 36 views
0

在我的Groovy腳本我有這樣的代碼:如何將屬性設置爲可從Java代碼執行的Groovy腳本?

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

那是因爲我不能使用這些信息作爲參數傳遞給Groovy腳本,因爲其他用戶不應該知道這一點。當我運行這個腳本時,我在我的系統中設置了這個參數。現在我有一個問題。我有一個遠程運行Groovy腳本的Java應用程序。有什麼方法可以在Java代碼中設置環境變量? (Here我發現這是不可能的)。或者是否有一些安全的方法將這些屬性從Java發送到Groovy?

+0

你是什麼意思由_「......哪些遠程運行groovy腳本」_? Java如何運行groovy腳本?另外,在系統環境中設置用戶名/密碼意味着您一次只能運行一個用戶? – 2012-07-31 10:21:55

+0

看這裏:http://stackoverflow.com/questions/11155799/how-to-get-output-of-groovy-script-in-java我有這個代碼的應用程序服務器上的web應用程序 – hudi 2012-07-31 10:24:08

+0

所以...你'那麼,你只是在運行它... – 2012-07-31 10:31:13

回答

1

如果你推出由Runtime.exec(或類似)的最小公分母Groovy腳本,那麼您可以在one of the overloaded methods指定環境:

與一個單獨的進程中執行指定的字符串命令指定的環境。

...

envp - 字符串數組,其中的每個元素具有在格式名=值環境變量的設置,或者爲null如果子進程應該繼承當前進程的環境。

如果另一方面您在同一個Java進程中調用Groovy腳本,那麼它將具有與正在運行的進程相同的屬性。因此,在調用Groovy腳本之前調用System.setProperty("USER", xxx)將意味着您的Groovy邏輯可以看到該屬性。


你應該注意的是,環境是操作系統級別的東西;該進程正在運行的操作系統的屬性的度量。

如果您正在尋找應用程序級別的設置,那麼您確實應該檢查System.properties

+0

我嘗試使用:System.setProperty然後調用這個變量:System.getenv()['USER'] 但沒有成功 – hudi 2012-08-01 09:15:34

+0

@hudi - 只是注意到你正在檢查應用程序設置的*環境*。這基本上不是正確的做法,您應該檢查*系統屬性*。 (環境基本上是「Windows如何設置的?」,這可以理解爲不能被應用程序修改。) – 2012-08-01 09:40:24

+0

我不能使用systemProperty,因爲在文章中我提到我的問題是寫在那麼這些可以用命令行設置爲:-Dpropertyname = value我不想要的東西 – hudi 2012-08-01 09:57:59

相關問題