我有一个带有一组jsp的动态Web项目和一个自定义控制器servlet,它运行良好。但是,我还需要在其上实现一个简单的休息服务,这就是我改变网络的原因。 xml还包含rest easy servlet。和调用其余简单资源的应用程序类。但是,当我向web.xml添加更改时,它正在使用rest servlet,但抛出异常..
java.lang.ClassNotFoundException: org.scannotation.AnnotationDB$CrossReferenceException
Web.xml:
<servlet>
<display-name>ControllerServlet</display-name>
<servlet-name>ControllerServlet</servlet-name>
<servlet-class>com.example.ControllerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>CollRestApi</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.exampl.RestApiApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name>
<url-pattern>/ControllerServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CollRestApi</servlet-name>
<url-pattern>/or/*</url-pattern>
</servlet-mapping>
休息Api申请:
public class RestApiApplication extends Application{
private Set<Object> singletons = new HashSet();
private Set<Class<?>> empty = new HashSet();
public RestApiApplication() {
// ADD YOUR RESTFUL RESOURCES HERE
this.singletons.add(new CollRestApi());
}
public Set<Class<?>> getClasses()
{
return this.empty;
}
public Set<Object> getSingletons()
{
return this.singletons;
}}
并且CollRestApi ..正在暴露服务..
@Path("api")@Consumes({ "application/xml", "application/json" })@Produces({application/xml", "application/json" })public class CollRestApi {
/**
* @return
*/
@GET
@Path("ab")
public Response do() {
System.out.println("Inside the do Method.");
}}
答案 0 :(得分:4)
显然,您需要将scannotation.jar添加到类路径中。 RESTEasy 2.2.2.GA依赖于scannotation-1.0.3和javassist-3.12.1.GA.jar,你也需要它。
答案 1 :(得分:4)
我使用maven和netbeans时遇到了同样的问题。答案是将jboss maven存储库添加到您的pom.xml文件中。只需添加<dependency>....</dependency>
,例如通过使用netbeans maven浏览器,不会安装resteasy的dependecies。
<repositories>
<repository>
<id>jboss</id>
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>
答案 2 :(得分:0)
我遇到了同样的异常,并修复了这个:
你是否有可能在不同的位置(例如tomcat lib目录)拥有resteasy **。jar库,而不是像scannotation-1.0.3.jar这样的其他支持lib的文件(例如在你的war文件WEB-INF /中) lib)?
在这样的配置中,你的resteasy类将从另一个没有看到scannotation-1.0.3.jar类的类加载器开始。
=&GT;尝试将所有resteasy jar文件放在其中一个位置(最好是.war文件)。