Получение ошибок в JAR-файлах Jersey при создании RESTful API в tomcat8, eclipse. Я использую jdk1.8.0_171 и Apache-Tomcat-8.0.24.
- Я создал динамический веб-проект в Eclipse.
- Поместите все файлы JAR в MyProject-> WebContent-> WEB-INF-> lib, который был загружен из https://jersey.github.io/download.html.
- Определите имя сервлета, класс сервлета, init-param, отображение сервлета и т. Д. В файле web.xml.
- Создайте пакет (wsdemo2) в папке src и создайте класс java (wsdemo2.java), который также содержит открытый класс и открытый метод.
- Я использовал аннотации, такие как @Path ("/ name"), @ GET, @ Produces (MediaType.TEXT_HTML), @ Path ("{name}")
- Компилируется успешно, но всякий раз, когда я пытаюсь запустить сервер, на нескольких 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;
}
}