java.lang.NoClassDefFoundError: javax/ws/rs/core/Configuration

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/27939467/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 05:20:28  来源:igfitidea点击:

java.lang.NoClassDefFoundError: javax/ws/rs/core/Configuration

javaweb-services

提问by msg

I am implementing rest easy web service and i am using jboss 4.0 but i am getting following exception...

我正在实现轻松的网络服务,我正在使用 jboss 4.0,但我遇到了以下异常...

java.lang.NoClassDefFoundError: javax/ws/rs/core/Configuration

my web.xml is

我的 web.xml 是

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>RestfulWebService</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <load-on-startup>1</load-on-startup>
</servlet> -->
<!-- <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>javax.ws.rs.core.Application</servlet-class>
</servlet> -->
<listener>
    <listener-class>
   org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
    </listener-class>
</listener> 
<!-- <context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>true</param-value>
</context-param> -->

<servlet>
    <servlet-name>Resteasy</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.websevices.TestService</param-value>
    </init-param>
</servlet>
<!-- <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping> -->
<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<context-param>
            <param-name>resteasy.servlet.mapping.prefix</param-name>
            <param-value>/rest</param-value>



采纳答案by Pandiri

From the Exception its clear that The class loader is not able to find the class Configuration (from javax/ws/rs/core/Configuration).

从异常中可以看出类加载器无法找到类配置(来自 javax/ws/rs/core/Configuration)。

Please check classpath, corresponding JAR file and make sure that the class file exist.

请检查类路径、对应的JAR 文件并确保类文件存在。

回答by Alfishe

It's easy to meet such error when migrating/copying dependencies from servlet based project to standalone. For servlet based project one usually needs dependency with scope = 'provided' relying that servlet provides implementation:

将依赖项从基于 servlet 的项目迁移/复制到独立项目时,很容易遇到此类错误。对于基于 servlet 的项目,通常需要依赖 scope = 'provided' 依赖该 servlet 提供实现:

Dependency causing error:

导致错误的依赖:

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0.1</version>
    <scope>provided</scope>
</dependency>

But for standalone projects there is no servlet implementation so you need to turn on copy javax.ws.rs-api to classpath. Usually you need just to remove <scope>provided</scope> line and have straightforward dependency:

但是对于独立项目,没有 servlet 实现,因此您需要打开将 javax.ws.rs-api 复制到类路径。通常你只需要删除 <scope>provided</scope> 行并有直接的依赖:

Fixed dependency:

固定依赖:

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0.1</version>
</dependency>