【发布时间】:2018-02-06 14:29:25
【问题描述】:
在.bashrc 和.profile 中,我将QHOME 变量设置为包含k4.lic、l64、q.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”。建议的解决方案是
“如果您希望在所有 Bourne shell 衍生工具中设置一个变量,无论它们是否是交互式的,请将其放在 .profile 和 .bashrc 中。”
但是我已经把.bashrc的内容复制到.profile里面还是一样的错误。
不幸的是,没有办法将许可证的路径作为q 二进制文件的命令行参数传递,所以我必须使用QHOME。
我可以做的是在我的 java 项目中放置一个 32 位版本,但显然使用 64 位版本是有利的。
非常感谢您的建议!
谢谢
【问题讨论】:
-
假设您使用类似 Java
exec方法来运行 Q 进程,我认为您应该调整正在运行的命令以包含QHOME变量,例如exec("QHOME=/path/to/licence q")而不是exec(q)
标签: java bash shell kdb q-lang