Получение ошибок в JAR-файлах в Джерси при создании RESTful API в tomcat8, eclipse - PullRequest
0 голосов
/ 20 апреля 2019

Получение ошибок в JAR-файлах Jersey при создании RESTful API в tomcat8, eclipse. Я использую jdk1.8.0_171 и Apache-Tomcat-8.0.24.

  1. Я создал динамический веб-проект в Eclipse.
  2. Поместите все файлы JAR в MyProject-> WebContent-> WEB-INF-> lib, который был загружен из https://jersey.github.io/download.html.
  3. Определите имя сервлета, класс сервлета, init-param, отображение сервлета и т. Д. В файле web.xml.
  4. Создайте пакет (wsdemo2) в папке src и создайте класс java (wsdemo2.java), который также содержит открытый класс и открытый метод.
  5. Я использовал аннотации, такие как @Path ("/ name"), @ GET, @ Produces (MediaType.TEXT_HTML), @ Path ("{name}")
  6. Компилируется успешно, но всякий раз, когда я пытаюсь запустить сервер, на нескольких JAR-файлах в Джерси происходит несколько исключений ClassFormatException, например - jakarta.json-api-1.1.5.jar, yasson-1.0.3.jar, jakarta.ws.rs-api-2.1.5.jar, jakarta.json.bind-api-1.0.1.jar, jakarta.xml.bind-api-2.3.2.jar.

Ошибка образца 1:

Apr 20, 2019 12:33:21 PM org.apache.catalina.startup.ContextConfig processAnnotationsJar
SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/E:/DemoUser/Demo%20Tomcat%20Workspace/apache-tomcat-8.0.24/webapps/MyProject/WEB-INF/lib/jakarta.json-api-1.1.5.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97)
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:55)
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:176)
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2011)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1961)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1936)
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1897)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1149)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5066)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

web.xml

<servlet>
      <servlet-name>JAVA WS</servlet-name>
      <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>wsdemo2</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>JAVA WS</servlet-name>
  <url-pattern>/*</url-pattern>
  </servlet-mapping>

wsdemo2.java

package wsdemo2;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/wsdemo2")
public class wsdemo2 {
    @GET
    @Produces(MediaType.TEXT_HTML)
    @Path("{name}")
    public String sayhello2(@PathParam("name") String name) {
        String response = "<h1>Your name is > "+name+"</h1>";
        return response;
    }
}
...