[英]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设置或其他东西),但我不知道在这一步如何调试)
获取内容
该方法首先通过调用
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.