我在与一些简单的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