gpt4 book ai didi

java - Tomcat6 中的类路径资源(适用于 Jetty)

转载 作者:行者123 更新时间:2023-12-01 05:05:32 26 4
gpt4 key购买 nike

我在使用要迁移到 Maven3 的旧 Web 应用程序时遇到问题。

我需要从目录结构中位于的类路径中获取一个文件:

/src/main/resources/com/thinkglish/geoip/GeoIP.dat

当我使用 Maven 构建创建 .war 文件时,我可以确认该 .dat 文件位于(应该位于):

WEB-INF/classes/com/thinkglish/geoip/GeoIP.dat

我正在尝试两种不同的方法从我的一个类获取资源,该类实现了javax.servlet.Filter:

ClassPathResource resource = new ClassPathResource("com/thinkglish/geoip/GeoIp.dat");

URL resource = getClass().getResource("/com/thinkglish/geoip/GeoIp.dat");

如果我使用 Maven 的 Jetty 插件启动应用程序,则两种方式都工作正常。但是,当我将应用程序部署在 Tomcat 中并启动服务器时,无法找到资源。

在第一种情况下,我得到一个 java.io.FileNotFoundException: class path resource [com/thinkglish/geoip/GeoIp.dat] 无法解析为 URL,因为它不存在 并且在第二种情况资源为null

关于这一切的一个奇怪的事情是,如果我使用一种方法或另一种方法尝试从类路径获取另一种资源(例如 com/thinkglish/struts/i18n/MessageResources.propertiescom/thinkglish/filter/LanguageFilter.class)它工作没有任何问题。

对此你有什么猜测吗? .dat 扩展名是否可能与此有关?

<小时/>

已编辑 - 更多数据!

我将一个新的 .properties 模拟文件添加到 .dat 文件所在的完全相同的目录中:

/src/main/resources/com/thinkglish/geoip/mock.properties

我尝试在 Tomcat6 中获取它,它成功了!

ClassPathResource resource = new ClassPathResource("com/thinkglish/geoip/mock.properties");

我开始认为我需要做一些其他配置方面的事情才能使 Tomcat6 接受 .dat 文件作为类路径资源。

提前致谢!

最佳答案

我可能在这里完全搞错了树...但是你检查过 GeoIP.dat/GeoIp.dat 的大小写吗? Tomcat 是否在区分大小写的操作系统上运行?

关于java - Tomcat6 中的类路径资源(适用于 Jetty),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12752219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com