我在與一些簡單的Java代碼的麻煩:意外使用concat行爲
// the env var is set
public final String METACHEK_pref = System.getenv().get("MCHK_DIR");
// the env var should be :
public String tempMP = "/disk3/METACHECK/Metacheck/metachek";
System.out.println("#1:"+METACHEK_pref+File.separator+"metachek");
System.out.println("#2:"+tempMP+File.separator+"metachek");
它打印:
#1:/metachekTACHECK/Metacheck/metachek
#2:/disk3/METACHECK/Metacheck/metachek/metachek
我試過在不同的操作系統代碼,只是一個在solaris有這個問題。當然,代碼必須在這個特定的服務器上工作。
我不知道在哪裏檢查是否有一些奇怪的參數設置在隱藏的conf文件中。
任何人有一個想法是怎麼回事?爲什麼concat已經演變爲插入命令?
編輯:
我創建了這個代碼另一個罐子:
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String METACHEK_pref = new String(System.getenv().get("MCHK_DIR").toString());
String tempMP = "/disk3/METACHECK/Metacheck/metachek";
System.out.println("#1:"+METACHEK_pref);
System.out.println("#2:"+METACHEK_pref+File.separator+"metachek");
System.out.println("#3:"+tempMP+File.separator+"metachek");
}
}
,這是輸出:
#1:/disk3/METACHECK/Metacheck/metachek /metachek/METACHECK/Metacheck/metachek #3:/disk3/METACHECK/Metacheck/metachek/metachek
見#2是如何消失?
你確定MCHK_DIR變量是否真的設置爲你所期望的? –
是的,它是一個系統env var。正如你在第一個sysout中看到的,路徑很好,但是concat部分是壞的地方 – user1808484
@ user1808484首先打印METACHEK_pref,請 – logoff