使用Eclipse Export构建Spring Roo / Export maven项目 - > Runnable JAR文件

时间:2011-02-19 06:54:04

标签: eclipse spring maven m2eclipse spring-roo

我在STS 2.5.1.RELEASE中使用Spring roo创建了Maven项目(它是Eclipse 3.6.1 + Spring工具+ m2eclipse)。我在构建路径上有第二个简单的Java项目。在Eclipse中一切正常。

现在的问题是建立。我不能用maven这样做,因为它还要求引用的项目是maven项目。对于引用的项目,我只使用Eclipse Export - > Runnable JAR文件导出并生成下一次构建的ant文件。

对于第一个项目这样做,我得到运行时错误,即使META-INF / spring / applicationContext.xml都是.jar并且在.jar旁边的文件夹中

2011-02-19 13:58:39,135-org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [META-INF/spring/applicationContext.xml]
2011-02-19 13:58:39,405-org.springframework.core.io.support.PathMatchingResourcePatternResolver - Cannot search for matching files underneath URL [rsrc:com/company/test/] because it does not correspond to a directory in the file system
java.io.FileNotFoundException: URL [rsrc:com/company/test/] cannot be resolved to absolute file path because it does not reside in the file system: rsrc:com/company/test/
    at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:204)

参考项目正在蓬勃发展,我无法移动,重构或改变其性质。 使用Spring roo的Maven项目是要开发的并行版本。

如何使用包含的eclipse项目构建maven项目?

实施例。 Project / RooInheritanceMaven在其(eclipse)构建路径上有project / RooInheritanceJava。

的.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry combineaccessrules="false" kind="src" path="/RooInheritanceJava"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

3 个答案:

答案 0 :(得分:4)

Eclipse Export to Executable JAR和Spring之间不兼容。 更确切地说,它是

org.springframework.core.io.support.PathMatchingResourcePatternResolver
之前有类似的问题。见

#SPR-3815 Classloader problem - Spring Projects Issue Tracker

尝试

jar -tf PersonApp.jar >PersonApp.jar.txt

解决方案是从jar中提取.classes和所有东西到文件夹

jar xf PersonApp.jar

并以

运行
set CLASSPATH=D:\TEMP\KDF.MSSQL\antlr-2.7.6.jar;D:\TEMP\KDF.MSSQL\aopalliance-1.0.jar; <... all jar dependecies listed>
java com/company/PersonApp

答案 1 :(得分:1)

答案 2 :(得分:0)

使用Roo命令

perform package

将您的应用程序捆绑在一起 - 以便您可以将其部署到您自己的容器中。