Maven3に移行するレガシーWebアプリケーションで問題が発生しています。
ディレクトリ構造内にあるクラスパスからファイルを取得する必要があります。
/src/main/resources/com/thinkglish/geoip/GeoIP.dat
Mavenビルドで.warファイルを作成すると、この.datファイルが(あるべき姿で)次の場所にあることを確認できます。
WEB-INF / classes / com / thinkglish / geoip / GeoIP.dat
私は、javax.servlet.Filterを実装するクラスの1つからリソースを取得するために、2つの異なるアプローチを試みています。
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
し、2番目のケースではリソースはnull
です。
com/thinkglish/struts/i18n/MessageResources.properties
これについての不思議なことは、クラスパス(または)から別のリソースを取得しようとしていずれかのメソッドを使用した場合com/thinkglish/filter/LanguageFilter.class
、問題なく機能することです。
これについて何か推測はありますか?.dat拡張子がこれと関係がある可能性はありますか?
編集済み-より多くのデータ!
.datファイルが存在するのとまったく同じディレクトリに新しい.propertiesモックファイルを追加しました。
/src/main/resources/com/thinkglish/geoip/mock.properties
Tomcat6で取得しようとしましたが、機能しました。
ClassPathResource resource = new ClassPathResource("com/thinkglish/geoip/mock.properties");
Tomcat6が.datファイルをクラスパスリソースとして受け入れるようにするには、構成に関して別のことを行う必要があると思い始めています。
前もって感謝します!