kdb q - 尽管$ QHOME设置

时间:2018-02-06 14:29:26

标签: java bash shell kdb q-lang

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

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

当我从java开始编程的程序时,我得到以下输出

[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 env变量未定义。 here描述了此问题:“.bashrc仅来自登录shell”。建议的解决方案是

  

“如果你想在所有Bourne shell衍生物中设置一个变量而不管它们是否是交互式的,那么将它放在.profile和.bashrc中。”

但我已将.bashrc的内容复制到.profile,但仍然会收到同样的错误。

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

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

建议非常感谢!

由于

1 个答案:

答案 0 :(得分:2)

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

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

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

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