136

全て

次のMANIFEST.MFを含むjarファイルを作成しました。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_25-b06 (Sun Microsystems Inc.)
Main-Class: my.Main
Class-Path: . lib/spring-core-3.2.0.M2.jar lib/spring-beans-3.2.0.M2.jar

そのルートには、次のように私のspring-context.xmlで参照されるmy.configというファイルがあります。

<bean id="..." class="...">
    <property name="resource" value="classpath:my.config" />
</bean>

jarを実行すると、その特定のファイルのロードを除いて、すべてが正常に見えます。

Caused by: java.io.FileNotFoundException: class path resource [my.config] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/work/my.jar!/my.config
        at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:205)
    at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)
    at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:32)
    at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:1)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
    ... 22 more
  • クラスはjar内からロードされます
  • 春と他の依存関係は別々のjarファイルからロードされます
  • Springコンテキストがロードされます(new ClassPathXmlApplicationContext( "spring-context / applicationContext.xml"))
  • my.propertiesがPropertyPlaceholderConfigurer( "classpath:my.properties")にロードされます
  • .configファイルをファイルシステムの外に置き、リソースのURLを「file:」に変更すると、すべてが正常に見えるようになります...

任意のヒント?

4

12 に答える 12

259

spring-context.xml ファイルと my.config ファイルが異なる jar にある場合は、classpath*:my.config?

詳細はこちら

また、jar ファイル内からロードするときにresource.getInputStream()notを使用していることを確認してください。resource.getFile()

于 2013-02-14T14:24:58.503 に答える
2

Tomcat6.x を使用しているときに同様の問題が発生しましたが、見つけたアドバイスはどれも役に立ちませんでした。最後にwork(Tomcatの)フォルダーを削除すると、問題はなくなりました。

私はそれが非論理的であることを知っていますが、文書化の目的のために...

于 2014-11-24T12:49:32.353 に答える