我有一段 Ruby 代码,它依赖于从 C 构建的二进制文件。我通常通过反引号调用二进制文件。但是现在当我使用 Warbler 将 Ruby 代码打包到一个 jar 中时,我不确定如何访问二进制文件。
我的代码结构如下所示:
root/
|--bin/
|--exec.rb #This is the executable when I call java -jar example.jar
|--lib/
|--Module1.rb #This dir contains all the ruby modules my code requires
|--ext/
|--a.out #A binary compiled with gcc
|--.gemspec #A file to guide warbler into building this structure into a jar
我曾经warble
将整个结构构建成一个罐子。在 Ruby 中,我可以a.out
通过 exec.rb 中的以下语句访问我的。
exec = "#{File.expand_path(File.join(File.dirname(File.dirname(__FILE__)), 'ext'))}/a.out}";
`exec`
但是,当我尝试将此代码打包为 jar 时,我收到以下错误:
/bin/sh: file:/path/to/my/jar/example.jar!/root/ext/a.out: not found
那么,如何访问打包在 jar 中的可执行文件。