kdb q - 尽管设置了 $QHOME,但仍未找到许可证

kdb q - license not found despite $QHOME set

.bashrc.profile 中,我将 QHOME 变量设置为包含 k4.licl64q.k 的目录(由 echo $QHOME 验证)。

当我从登录 shell 启动 q 时一切正常,找到了许可证文件。

当我从 java 以编程方式启动 q 进程时,我得到以下输出

[13:43:48][Step 1/2]  WARN [main] (QSession.java:78) - Q Session not alive
[13:43:48][Step 1/2]  INFO [main] (QSession.java:97) - QHOME: null
[13:43:48][Step 1/2]  INFO [main] (QSession.java:98) - QLIC: null
[13:43:48][Step 1/2] ERROR [main] (QSession.java:101) - Error output
[13:43:48][Step 1/2] '2018.02.06T13:43:46.597 k4.lic

即未找到许可证,因为 QHOME 环境变量未定义。此问题描述为 here:“.bashrc 仅源自登录 shell”。建议的解决方案是

"If you want a variable to be set in all Bourne shell derivatives regardless of whether they are interactive or not, put it in both .profile and .bashrc."

但是我已经把.bashrc的内容复制到.profile里面了,还是报同样的错误

不幸的是,无法将许可证的路径作为命令行参数传递给 q 二进制文件,因此我必须使用 QHOME

我能做的是在我的 java 项目中放置一个 32 位版本,但显然使用 64 位版本是有利的。

非常感谢建议!

谢谢

感谢@Jonathan McMurray! 确切的解决方案是使用

Runtime.getRuntime().exec(command, envp);

其中 command 例如 q -p 5000envp 例如

String[] envp = {"QHOME="+qHomePath};