我正在开发一个需要能够与 GAMS 交互的 Java/JRuby 项目。我知道我们可以使用 Java API,但如果可能的话,我真的希望能够使用 JRuby 访问它,因为我们希望最终添加 DSL 和其他一些复杂性,我对必须在纯Java。
按照 GAMS 的官方 Java API文档,我已经下载并设置了从命令行运行 GAMS 所需的一切,但我不知道如何在 LD_LIBRARY_PATH 中包含 GAMS 目录并仍然运行 JRuby irb。当我跑
export LD_LIBRARY_PATH=/home/wikk/Downloads/gams24.0_linux_x64_64_sfx
然后尝试用 JRuby 运行 irb,我得到了
jruby: /home/wikk/Downloads/gams24.0_linux_x64_64_sfx/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found (required by jruby)
我认为这是文档要求我运行调用 API 的 Java 程序的方法,是否有某种方法可以在 irb 中设置 LD_LIBRARY_PATH,但在导入所有 Java 类文件之前?如果我不设置 LD_LIBRARY_PATH,我可以成功地做到这一点,但是当我尝试创建一个新的 GAMSWorkspace 对象时,GAMS 告诉我它找不到主程序:
irb(main):002:0> ws = GAMSWorkspace.new
Java::ComGamsApi::GAMSException: could not find a GAMS system directory from
your environment variable, please set up properly before running a program!
from com.gams.api.GAMSWorkspace.verifySystemDirectory(GAMSWorkspace.java:335)
我做错了吗?或者 API 是否需要一些在 JRuby 中未实现的 Java 功能?