java - 将 BufferedInputStream 传递给接受 InputStream 的方法

标签 java groovy inputstream metadata-extractor

我正在调用一个接受InputStream 的方法。这是github上的方法:https://github.com/drewnoakes/metadata-extractor/blob/2.8.0/Source/com/drew/imaging/ImageMetadataReader.java#L89

我正在使用 BufferedInputStream 调用该方法,它应该可以工作,因为它是 InputStream 的子级,但我不断收到此错误:

No signature of method: static com.drew.imaging.ImageMetadataReader.readMetadata() is applicable for argument types: (java.io.BufferedInputStream) values: [java.io.BufferedInputStream@74d4ec5f]
Possible solutions: readMetadata(java.io.File), readMetadata(java.io.BufferedInputStream, boolean). Stacktrace follows:
Message: No signature of method: static com.drew.imaging.ImageMetadataReader.readMetadata() is applicable for argument types: (java.io.BufferedInputStream) values: [java.io.BufferedInputStream@74d4ec5f]
Possible solutions: readMetadata(java.io.File), readMetadata(java.io.BufferedInputStream, boolean)
    Line | Method
->>  137 | settings  in com.foo.scanner.AdminController
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|    198 | doFilter  in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter  in grails.plugin.cache.web.filter.AbstractFilter
|     53 | doFilter  in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
|     62 | doFilter  in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
|     59 | doFilter  in grails.plugin.springsecurity.web.SecurityRequestHolderFilter

这是我的代码:

println file62.name //prints name of the file
println file62.inputStream.getClass() //prints java.io.BufferedInputStream
InputStream is = (InputStream)file62.inputStream
Metadata metadata = com.drew.imaging.ImageMetadataReader.readMetadata(is) //readMetadata expects InputStream

我拥有的库版本:

✗ grails 依赖报告 | grep“画” +--- com.drewnoakes:元数据提取器:2.9.1 +--- com.drewnoakes:元数据提取器:2.9.1 +--- com.drewnoakes:元数据提取器:2.9.1

这是2.9.1中的方法:https://github.com/drewnoakes/metadata-extractor/blob/2.9.1/Source/com/drew/imaging/ImageMetadataReader.java#L88

最佳答案

异常表明该方法需要一个 FileBufferedInputStream 一个 boolean 值。没有期望 BufferedInputStream 的重载。

如果您确定形式参数和实际参数匹配,那么这种异常(由形式参数不匹配引起)的最可能原因是周围有一个旧 jar 。运行 mvn cleangradle clean,检查您的 Web 容器的 lib 目录,并通常从您的系统中删除错误的 jar。

关于java - 将 BufferedInputStream 传递给接受 InputStream 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40249884/

相关文章:

java - Java 的 Groovy 超集

Java - 在不等待关闭的情况下将连续的 InputStream 转换为 String

java - java 构建速度慢,我喜欢进行小的增量更改并在浏览器中查看页面

java - 在 Java 中访问 Scala 元组元素的正确方法是什么?

grails - Grails 4.0无法将域保存到数据库

json - 尝试通过 HttpBuilder 将 JSON POST 到 REST URL 时出现另一个问题

java - 将输入流转换为位图

java - 如何在java中使用System.in.read()?

java - 如何通过计数排序对枚举进行排序?

java - Angelika Langer Enum<E extends Enum<E>> 解码