【发布时间】:2011-06-12 21:26:31
【问题描述】:
我正在尝试在 osgi (fuse esb) 中部署一个基于 spring 的包。在 spring 上下文中,我指的是资源文件夹内的一个 db4o 文件。根据我的理解,一个 Maven 项目将确保资源文件夹下的任何可用文件都将在项目类路径中可用。我将文件保存在 resources/META-INF/spring/repo/test.db4o 下。
这是 spring 上下文中的条目。
<bean id="objectContainer" class="org.springmodules.db4o.ObjectContainerFactoryBean">
<property name="databaseFile" value="classpath:META-INF/spring/repo/test.db4o" />
</bean>
一旦我安装并尝试启动应用程序,我就会收到以下异常。
java.io.FileNotFoundException: OSGi resource[classpath:META-INF/spring/repo/test.db4o|bnd.id=258|bnd.sym=taxonomydaoimplbundle] cannot be resolved to absolute file path because it does not reside in the file system: bundle://258.0:1/META-INF/spring/repo/test.db4o
我尝试了不同的组合,但 OSGi 似乎无法识别此文件。任何指针将不胜感激。
-谢谢
【问题讨论】:
-
test.db4o文件在哪个捆绑包中?您必须将它们放在同一个包中。 -
它在同一个包中。
-
你试过
classpath:/META-INF/spring/repo/test.db4o(以斜杠开头的路径) -
@Claszen ...我尝试了所有可能的组合。由于某种原因,它似乎没有起色。我什至在 pom.xml 中明确提到了 Include-Resource 下的文件。
{maven-resources}, {maven-dependencies}, repo/taxonomy.db4o=target/classes/repo/taxonomy.db4o -
你是把文件放到 src/**test**/resources (不会是打包的工件的一部分)还是 src/**main**/resources (将是打包的一部分神器)