【问题标题】:Classpath Resource in Tomcat6 (Works in Jetty)Tomcat6 中的类路径资源(在 Jetty 中工作)
【发布时间】:2012-09-26 23:05:25
【问题描述】:

我正在迁移到 Maven3 的旧版 Web 应用程序遇到问题。

我需要从目录结构中的Classpath中获取一个文件:

/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] cannot be resolved to URL because it does not exist,在第二种情况下,资源是null。

关于这一切的一个奇怪的事情是,如果我使用一种方法或另一种方法试图从 Classpath 获取另一个资源(例如 com/thinkglish/struts/i18n/MessageResources.properties 或 com/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 文件作为类路径资源。

提前致谢!

【问题讨论】:

    标签: java classpath tomcat6 maven-3 maven-jetty-plugin


    【解决方案1】:

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

    【讨论】:

    • 真可惜!你不会相信我,但你是对的。 Jetty 没有抱怨这个,所以我没有检查那个基本问题。谢谢!
    【解决方案2】:

    以下应该可以工作:

    String classpathLocation = "com/thinkglish/geoip/GeoIp.dat";
    URL classpathResource = Thread.currentThread().getContextClassLoader().getResource(classpathLocation);
    // Or:
    InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(classpathLocation);
    

    【讨论】:

    • 不走运,安舒。似乎由于某种原因,该文件没有进入 Classpath。
    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 2010-12-08
    • 2011-12-15
    • 2016-01-11
    • 2013-03-20
    • 2011-03-27
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多