【发布时间】:2022-01-08 03:37:49
【问题描述】:
这是我的方法:
public String retrieveMimeType(InputStream stream, String filename) throws Exception {
TikaConfig config = TikaConfig.getDefaultConfig();
Detector detector = config.getDetector();
TikaInputStream streams = TikaInputStream.get(stream);
Metadata metadata = new Metadata();
metadata.add(TikaCoreProperties.RESOURCE_NAME_KEY, filename);
MediaType mediaType = null;
mediaType = detector.detect(stream, metadata);
return mediaType.toString();
}
它在日志上给了我这个:
java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.read(Ljava/io/InputStream;[B)I
at org.apache.tika.detect.apple.BPListDetector.detect(BPListDetector.java:106)
at org.apache.tika.detect.CompositeDetector.detect(CompositeDetector.java:85)
at com.hraccess.helper.UserFileValidator.retrieveMimeType(UserFileValidator.java:313)
at com.hraccess.webclient.servlets.ServletBlob.doPost(ServletBlob.java:429)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
对于这一行:
at com.hraccess.helper.UserFileValidator.retrieveMimeType(UserFileValidator.java:313)
这是第 313 行:
mediaType = detector.detect(stream, metadata);
那我该怎么办?当我将解析器添加到我的 pom.xml 时,它会出现此错误。如何找到原因?
【问题讨论】:
-
你的 pom.xml 中也有 commons-io 吗?如果我看好的话,苹果
BPListDetector需要它,虽然我不知道为什么它不静态链接它。 -
上面写着
NoSuchMethodError,这使得commons-io 很可能在你的pom.xml 中(至少间接地,通过一个短暂的依赖)。但是这个 IOUtils 没有read方法。我认为最可能的原因是您使用的是较旧的 commons-io,它还没有这种方法。使用最新的,正如我在链接中显示的那样。
标签: java apache-tika