0

我尝试从一个简单的 ruby​​ 样本制作一个 .JAR。在 MRI 和 jRuby 中,我可以毫无问题地运行它,但是当我尝试对项目进行 warble 时,我在运行 JAR 文件时出现错误。

Errno::ENOENT: No such file or directory - configuration.yml

configuration.yml 文件不在项目文件夹中,因为它需要可编辑,因此不应包含在 JAR 中,最佳路径是相对于 jar,以便 YML 文件与 JAR 文件位于同一文件夹中. 那么我该怎么做呢?

我的 bin\sample.rb

require 'yaml'
@conf = YAML::load_file "c:/test/configuration.yml"
#@conf = YAML::load_file "c:\\test\\configuration.yml"
puts @conf['username']

我的 c:\test\configuration.yml

username: test

我的 .gemspec 文件

Gem::Specification.new do |spec|
  spec.require_paths << '.'
}

我的配置\warble.rb

Warbler::Config.new do |config|
  config.jar_name = "sample"
end

我使用“warble jar -trace”发出颤音并且没有错误我使用 jruby-1.7.4 和 warbler-1.3.8。

4

1 回答 1

0

在不使用 java 的情况下解决了这个问题,因为网络上的一些解决方案建议(但不是为了 warble)。

require 'yaml'

scriptpath = __FILE__[/(.*)\/.+\.jar!/]
yamlpath   = "#{$1[6..-1]}/configuration.yml"
@conf      = YAML::load_file(yamlpath)
puts @conf['username']
# => test
于 2013-08-21T16:12:52.853 回答