繁体   English   中英

java.net.URL.getContent UnknownServiceException:无内容类型

[英]java.net.URL.getContent UnknownServiceException: no content-type

请帮我找出问题所在:我们有 2 台服务器(旧的和新的)。 在旧服务器上代码运行良好,但在新服务器上此代码不起作用:

XWPFDocument doc;
try {
    doc = new XWPFDocument((InputStream) this.getClass().getClassLoader().getResource(filePath).getContent());
} catch (IOException e) {
    e.printStackTrace();
}

从日志:

java.net.UnknownServiceException: no content-type
        at java.net.URLConnection.getContentHandler(URLConnection.java:1241)
        at java.net.URLConnection.getContent(URLConnection.java:740)
        at java.net.URL.getContent(URL.java:1081)

文件路径指向 docx 文件,该文件存储在应用程序模块之一的资源中。 (当然我已经检查过文件的存在。)所以 UrlResource 是

UrlResource:jar:file:/tomcat/webapps/ourApplication/WEB-INF/lib/moduleName.jar!/internalResourseFolderStructure/file.docx

关于服务器:它们的 Tomcat 版本略有不同:旧 - Tomcat 9.0.19.0 新 - Tomcat 9.0.33.0

也许你可以给我一些如何调试它的提示? (我完全确定它与服务器有关(Tomcat设置或其他东西),但我不知道在这一步如何调试)

URLConnection

获取内容

该方法首先通过调用getContentType方法来确定对象的内容类型。 如果这是应用程序第一次看到该特定内容类型,则会创建该内容类型的内容处理程序。

由于它是一个文件 URL,没有 HTTP 标头,这就是为什么特定错误是“无内容类型”的原因。 即使内容类型可用,默认情况下 Java 也不知道如何将application/vnd.openxmlformats-officedocument.wordprocessingml.document转换为 Java 对象。

也许在旧服务器上 Tomcat 设置了 .docx 的 MIME 映射和注册的ContentHandler以返回有用的东西。

如果您真正想要的是InputStream ,则使用getResourceAsStream ,它始终有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM