gpt4 book ai didi

java - Java 进程中环境变量 (NLS_LANG) 值已更改?

转载 作者:行者123 更新时间:2023-12-01 16:06:36 27 4
gpt4 key购买 nike

在一些旧版 Java 应用程序(HP-UX 上的 jre1.4)中注意到了这一点。

父进程(shell 脚本 S1)正在启动 Java 进程,该进程本身正在启动子进程(shell 脚本 S2)。概括地说,它是:S1 > Java > S2

注意! Java 应用程序使用 OCI 驱动程序连接到 Oracle DB。

这里奇怪的是,运行 S1 的进程将环境变量 NLS_LANG 设置为 american_america.BLT8MSWIN1257,Java 使用以下方式生成 S2:

Runtime.getRuntime().exec(cmd);

并且 S2 显示 NLS_LANG 设置为 american_america.UTF8 (!)

这发生在某些访问受限的环境(生产)上,我无法使用 jre 1.5 在 Linux 上重现相同的问题。

据我所知,Java 进程应该从其父进程 (S1) 继承环境,并且应该将所有环境变量传递给其子进程 S2(因为使用了单参数 exec 调用)。然而,情况似乎并非如此。您知道为什么 NLS_LANG 似乎被更改了吗?

最佳答案

系统中是否有登录触发器?在登录触发器中设置大量环境变量(通常为 NLS_*_FORMAT)以不依赖于系统行为的环境配置是很常见的。

SELECT * FROM DBA_TRIGGERS
WHERE TRIGGERING_EVENT = 'LOGON';

关于java - Java 进程中环境变量 (NLS_LANG) 值已更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com