2

我正在尝试通过使用 Spring 和 spring xml 配置文件的 cmd 行运行 jar 文件。

cmd 行调用类似于:

java -cp lib/MyJar.jar my.package.MyClass

我得到的错误是:

Caused by: java.io.FileNotFoundException: class path resource 
   [myPath/mySpringCfg.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)

我的清单类路径类似于:

Class-Path: 3rdPartyJar1.jar 3rdPartyJar2.jar ./myPath/

加载文件的调用等同于:

context = new ClassPathXmlApplicationContext("myPath/mySpringCfg.xml");

有没有办法在类路径中正确拉入 XML 文件,以便 Spring 按预期工作?似乎类路径文档只讨论存档文件和文件夹。

谢谢!

更新

当我切换到 FileSystemXmlApplicationContext 时,它似乎运行良好。我猜 ClassPathXmlApplicationContext 不能从命令行使用

4

2 回答 2

2

您对 XML 的引用是myPath/mySpringCfg.xml- 这意味着它myPath必须在类路径中。

将您的清单更改为:

Class-Path: 3rdPartyJar1.jar 3rdPartyJar2.jar ./

这种方式myPath将成为类路径的一部分,而不仅仅是其内容。

注意: 应用程序配置 XML 是应用程序代码的一部分,不要将其误认为是配置。

如果您需要配置 - 将其放在属性文件中,并在 XML 配置文件中使用占位符。

更新:

我认为你的问题的根本原因在于代码(虽然我没有测试它) - 试试这个:

context = new ClassPathXmlApplicationContext("/myPath/mySpringCfg.xml");

区别在于 'myPath' 之前的 '/'

于 2013-04-09T17:40:07.453 回答
0

我不知道你项目的架构,但为什么不把你的xml配置文件放到你的项目jar中呢?

于 2013-04-09T17:31:30.093 回答