Java 将ByteArrayInputStream强制为InputStream

Java 将ByteArrayInputStream强制为InputStream,java,jruby,bytearrayinputstream,Java,Jruby,Bytearrayinputstream,我有一些代码可以: content = Java::byte[s].new f = tar.read(content, 0, s) content_stream = ByteArrayInputStream.new(content) 到目前为止,一切顺利 但当我尝试使用只接受InputStream的方法时,如下所示: metadata = ImageMetadataReader.readMetadata(content_stream) 我得到以下例外情况: NameError: no met

我有一些代码可以:

content = Java::byte[s].new
f = tar.read(content, 0, s)
content_stream = ByteArrayInputStream.new(content)
到目前为止,一切顺利

但当我尝试使用只接受InputStream的方法时,如下所示:

metadata = ImageMetadataReader.readMetadata(content_stream)
我得到以下例外情况:

NameError: no method 'readMetadata' for arguments (java.io.ByteArrayInputStream) on Java::ComDrewImaging::ImageMetadataReader

我尝试过使用
content\u stream.to\u java(java.io.InputStream)
,但仍然会产生相同的错误。有什么想法吗?

这是因为readMetadata有两个签名,一个带有一个参数:一个java.io.File,另一个您尝试使用的签名包含两个参数:一个ByteArrayInputStream和一个boolean。尝试用
ImageMetadataReader.readMetadata(content\u stream,false)

替换您的代码,这是因为readMetadata有两个签名,一个带有一个参数:一个java.io.File,另一个您尝试使用的签名包含两个参数:ByteArrayInputStream和一个boolean。尝试用
ImageMetadataReader.readMetadata(content\u stream,false)

单参数readMetadata()获取一个文件;有一个双参数,它接受一个*缓冲*输入流和一个布尔值。您可以将ByteArrayInputStream包装在BufferedInputStream中,并决定是否要“waitForBytes”,无论这意味着什么…

单参数readMetadata()接受一个文件;有一个双参数,它接受一个*缓冲*输入流和一个布尔值。您可以将ByteArrayInputStream包装在BufferedInputStream中,并决定是否要“waitForBytes”,无论这意味着什么…

这让我
NameError:没有参数的“readMetadata”方法(java.io.ByteArrayInputStream,org.jruby.RubyBoolean.False)在Java::ComDrewImaging::ImageMetadataReader
上获取我的
名称错误:在Java::ComDrewImaging::ImageMetadataReader
上没有参数(Java.io.ByteArrayInputStream,org.jruby.RubyBoolean.False)的“readMetadata”方法,BufferedInputStream就是答案!我以为我疯了,但我只是在看ImageMetadataReader.java的错误版本-来自master,而不是我实际使用的版本2.6.4。谢谢BufferedInputStream就是答案!我以为我疯了,但我只是在看ImageMetadataReader.java的错误版本-来自master,而不是我实际使用的版本2.6.4。谢谢