当前位置:编程学习 > JAVA >>

在JAVA中设置当前上下文环境变量的问题

关于在JAVA中设置当前线程上下文环境变量的问题

由于在solaris/unix环境下开发 需要经常用到crontab自动调用进程

但是crontab调用中 默认的环境变量非常的少 特别是LC_ALL 没有设置,导致Console输出中文时会出现乱码

使用log4j 等控件 也会默认取LC_ALL 为C 而出现大量乱码

JAVA 只设置了 System.getenv() 获取环境变量, 却没有办法修改当前环境变量 只能:

(1) crontab 中增加LC_ALL=zh_CH.GBK 例如
18 00 11 11 * LC_ALL=zh_CH.GBK  java -jar bin3.zip >/test1.log
(2) 使用sh 在sh文件里面增加 LC_ALL=zh_CH.GBK 例如
dts2.sh
LC_ALL=zh_CH.GBK  java -jar bin3.zip 

(3) 在JAVA 程序头部,添加小块代码 判断当前环境变量是否包含 LC_ALL=zh_CH.GBK 
如果不包含 则用process(cmd,env) 将当前环境变量 增加  LC_ALL=zh_CH.GBK  直接再重新启动
本程序, 同事本程序自己退出

以上三条方法都非常饶  所以想请问一下:  
怎样在JAVA中设置当前上下文环境变量 例如  LC_ALL=zh_CH.GBK   --------------------编程问答-------------------- 用ThreadLocal,详细的查看API,下面是API中的介绍:

java.lang 
类 ThreadLocal<T>
   该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。 --------------------编程问答-------------------- 局部变量 只是用来存点临时信息的吧?  跟环境变量 关系只是变量两个字相同 --------------------编程问答-------------------- 哦。我看错了,环境变量用它System.getenv(),要修改估计没有这样的接口吧,你看能不能操作文件 --------------------编程问答-------------------- System.getenv()取回的是个map对象。你往里面put就行了啊。在一开始就put进去
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,