在.bashrc
和.profile
中,我将QHOME
变量设置为包含k4.lic
,l64
,q.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位版本是有利的。
建议非常感谢!
由于
答案 0 :(得分:2)
感谢@Jonathan McMurray! 确切的解决方案是使用
Runtime.getRuntime().exec(command, envp);
其中command
例如q -p 5000
,envp
例如
String[] envp = {"QHOME="+qHomePath};