我需要帮助使用egit和m2e插件在我的eclipse / tomcat安装中运行the spring PETCARE application,我已经没有在我的机器上安装了这些插件。请注意,这是 NOT spring petclinic应用程序。以下是我到目前为止所做的事情:
1.) I downloaded the spring PETCARE sample into eclipse kepler
using the eclipse egit plugin
2.) I then converted it to a maven project in eclipse and did
a maven update using the m2e plugin.
问题是我在文件src/main/resources/META-INF/spring/appServlet/servlet-context.xml
中收到以下错误,表示找不到petcare:resources
:
Multiple annotations found at this line:
- schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/petcare/spring-petcare-3.0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
- cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'petcare:resources'.
我找到this posting,然后将spring.schemas
文件放在我的eclipse项目的路径myproject/src/main/resources/META-INF/spring.schemas
中。
spring.schemas
仅包含以下一行代码:
http\://www.springframework.org/schema/petcare/spring-petcare-3.0.xsd=org/springframework/samples/petcare/util/config/spring-petcare-3.0.xsd
有谁能告诉我如何解决这个问题,以便解决错误信息,我的应用程序可以编译?
如果使用egit和m2e插件将应用程序下载并安装到eclipse中,即使是明确的逐步说明就足够了。我们可以从头开始正确而不是从我目前得到的错误中回溯。
注意:除了接受的答案的内容之外,我还需要确保eclipse使用JDK而不是JRE才能使应用程序在eclipse中使用Run成功启动As ..Run on Server。
答案 0 :(得分:2)
petcare命名空间的问题在于它不能通过遵循架构位置URL在线获得。
Spring在运行时使用spring.schemas文件解决了这个问题,但是eclipse不知道这个文件,也不知道如何使用它来查找XSD。解决方案是使用XML Catalog在eclipse中手动配置petcare命名空间。
转到“首选项”,然后在“XML目录”部分中配置命名空间,如下所示:
在位置中将完整的硬盘路径放到xsd文件spring-petcare-3.0.xsd
,选择密钥类型Schema location
,然后输入密钥作为XSD的完整网址:http://www.springframework.org/schema/petcare/spring-petcare-3.0.xsd
要确认它是否有效,请右键单击servlet-context.xml文件,然后单击“验证”。该文件不应再为红色。
这是应用程序外观运行的示例:
这是访问它的URL:
http://localhost:20010/users/signin
要运行它,请执行以下步骤:
在webapp / META-INF
中创建名为context.xml的文件<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>
将其添加到build / plugins部分的pom.xml中:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>20010</port>
<path>/</path>
</configuration>
</plugin>
从命令行运行应用程序:
mvn clean install tomcat7:run-war -Dmaven.test.skip = true
运行日志:
INFO : org.springframework.integration.endpoint.EventDrivenConsumer - started org.springframework.integration.config.ConsumerEndpointFactoryBean#2
INFO : org.springframework.integration.endpoint.EventDrivenConsumer - started doctorMail.adapter
INFO : org.springframework.context.support.DefaultLifecycleProcessor - Starting beans in phase 0
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 1661 ms
Feb 05, 2014 12:11:01 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-20010"]
使用上面的网址
您可以在eclipse中创建maven启动配置,将其作为maven任务启动