【发布时间】:2018-07-17 03:22:16
【问题描述】:
我正在尝试使用 Java 的消息摘要类来计算我的 rails 应用程序内部大量文件的 md5 哈希值。我已经用 JRuby 在 ruby 脚本中编写了一些代码,但是对 Files.readAllBytes() 的调用给了我“未定义的方法 `getFileSystem' for #”。这是我用ruby写的方法:
def calculate_md5_java(zip)
require 'java'
import java.security.MessageDigest
import java.nio.file.Files
import javax.xml.bind.DatatypeConverter
import java.nio.file.FileSystems
md = MessageDigest.getInstance("MD5")
FileUtils.cp(zip, "GODPLEASELETTHISWORK.zip")
Zip::File.open("GODPLEASELETTHISWORK.zip") do |z|
z.each do |entry|
md.update(Files.readAllBytes(entry.get_input_stream))
end
end
digest = md.digest()
DatatypeConverter.printHexBinary(digest).toLowerCase()
end
我也尝试将我的论点更改为
md.update(entry.get_input_stream.read.bytes.to_a)
这给了我:
no method 'update' for arguments (org.jruby.RubyArray) on Java::JavaSecurity::MessageDigest::Delegate available overloads: (byte) (java.nio.ByteBuffer) (byte[])
【问题讨论】:
-
喂!您使用的是什么版本的 Java 和 JRuby?
标签: ruby-on-rails ruby jruby