Files.probeContentType在两台类似的计算机上表现不同

时间:2015-12-01 13:40:23

标签: java

我在使用Windows 7的计算机上完成了基于Java 8u45的项目的所有开发,然后硬盘驱动器出现故障,需要重新安装操作系统。据我所知,一切都应该与我以前设置的方式非常相似,但是现在我在我的新安装中运行它时注意到我的应用程序中的错误,但同样的错误不会发生在工作者的机器也在运行Windows 7.问题是Files.probeContentType(Path)似乎总是在我的机器上返回null,而它在另一台(和我以前的)机器上返回预期的mime类型。

我们都使用JDK 8u45(该项目暂时与此修订相关)。我的同事正在使用IDEA 14,而我正在使用IDEA 15.还应注意它似乎与IDE无关,因为从编译的可执行文件运行应用程序时遇到同样的问题(使用Launch4j) ,即使是捆绑的JRE)

我的开发环境是否有任何理由为null方法返回Files.probeContentType,但是具有相同版本操作系统的另一台机器不会?

1 个答案:

答案 0 :(得分:3)

在Windows上,Files.probeContentType采用您的文件扩展名来确定实际的mime类型。找到此扩展后,它会在Windows注册表中查找文件扩展名。您可以在HKEY_CLASSES_ROOT注册表配置单元中找到文件扩展名列表。如果此配置单元包含您要求的文件扩展名的密钥,它将在此密钥中查找名为Content Type的字符串。 probeContentType的返回值是此处存储的值。

由于您的Windows版本是全新安装,因此其注册表将包含的条目少于您的同事使用的条目。可能是您的系统根本不包含您要求的扩展的条目,因此probeContentType无法确定有效的mime类型,并返回null。