У меня есть приложение, которое использует jruby, и оно записывает некоторую информацию о файлах в таблицу.например, размер файла и номер старшего и младшего устройства.File::Stat.dev_minor
и File::Stat.dev_major
Однако я заметил, что jruby производит очень разные значения, чем собственный пакет ruby 1.9.2, например, под ruby;
irb(main):006:0> puts File::stat("/etc/passwd").dev_minor
5 <------- need to find this
=> nil
irb(main):007:0> puts File::stat("/etc/passwd").dev_major
104 <------- need to find this
=> nil
под jruby 1.6.4, это создает ClassNotFoundExceptions, однако он также возвращает число, которое записывает это приложение, и которое мне теперь нужно преобразовать обратно в родной ruby.
# File.stat("/etc/passwd").dev_minor
java.lang.ClassNotFoundException: rubygems.defaults.OperatingSystemService
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Metho
Exception `LoadError' at file:/srv/logstash/logstash-monolithic-1.1.0.jar!/META-INF/jruby.home/lib/ruby/site_ruby/shared/Win32API.rb:2 - Win32API only supported on win32
java.lang.ClassNotFoundException: rubygems.defaults.JrubyNativeService
at java.net.URLClassLoader$1.run(Unknown Source)
26629
# File.stat("/etc/passwd").dev_major
java.lang.ClassNotFoundException: rubygems.defaults.OperatingSystemService
at java.net.URLClassLoader$1.run(Unknown Source)
Exception `LoadError' at file:/srv/logstash/logstash-monolithic-1.1.0.jar!/META-INF/jruby.home/lib/ruby/site_ruby/shared/Win32API.rb:2 - Win32API only supported on win32
java.lang.ClassNotFoundException: rubygems.defaults.JrubyNativeService
0 <------- and this one too...
Я использую jruby 1.6.4 с использованиемКлиент Sun Java Java Hotspot 1.6.0_30, чем из базового Ruby 1.9.2 на fedora.
Есть предложения?
Я хотел бы преобразовать эти числа обратно в обычный рубиновый формат ..
jruby -> File.stat ("/ etc / passwd"). Кажется, что dev_minor соответствует значениям для stat -c %d /etc/passwd
= 26629