org.glassfish.jersey.server.ContainerException:java.lang.NoSuchMethodError:org.jvnet.mimepull.MIMEMessage.close()V [英] org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: org.jvnet.mimepull.MIMEMessage.close()V
问题描述
当我使用POSTMAN向我的RestService执行POST时,出现此错误,我搜索了并且出现了库问题,但我想我有一切正常。
Web.xml
< web-app version = 3.1xmlns =http://xmlns.jcp.org/xml/ns/javaeexmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexsi:schemaLocation =http:/ /xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd\">
< servlet>
< servlet-name> Jersey Servlet< / servlet-name>
< servlet-class> org.glassfish.jersey.servlet.ServletContainer< / servlet-class>
< init-param>
< param-name> jersey.config.server.provider.packages< / param-name>
< param-value> org.netbeans.rest.application.config.ApplicationConfig< / param-value>
< / init-param>
<加载启动> 1< /加载启动>
< / servlet>
< servlet-mapping>
< servlet-name> Jersey Servlet< / servlet-name>
< url-pattern> / *< / url-pattern>
< / servlet-mapping>
< / web-app>
ApplicationConfig.java
@ javax.ws.rs.ApplicationPath(webresources)
public class ApplicationConfig extends Application {
@Override
public Set< Class<?> ;> getClasses(){
Set< Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(资源);
resources.add(MultiPartFeature.class);
返回资源;
}
/ **
*不要修改addRestResourceClasses()方法。
*它会自动填入
*项目中定义的所有资源。
*如果需要,注释掉在getClasses()中调用此方法。
* /
private void addRestResourceClasses(Set< Class<>> resources){
resources.add(com.src.servicio.service.ServicioREST.class);
}
}
课程
@Path(/ service)
public class ServicioREST {
private final java.sql.Date fecha_Actual = new java.sql.Date(new java.util.Date()。getTime());
SimpleDateFormat dateFormat = new SimpleDateFormat(dd-MM-yyyy);
SimpleDateFormat dateFormat2 = new SimpleDateFormat(dd-MM-yyyy-HH-mm);
SimpleDateFormat yearformat = new SimpleDateFormat(yyyy);
DateFormat hourFormat = new SimpleDateFormat(HH:mm:ss);
$ b @POST
@Consumes({MediaType.MULTIPART_FORM_DATA})
@Path(test)
public response prueba(@HeaderParam(token)String标记,@FormDataParam(unix_time)字符串,
@FormDataParam(plate)字符串placa,@FormDataParam(lng)float longitudinal,@FormDataParam(lat)float latitud,
@FormDataParam(video)InputStream视频,@FormDataParam(证据)InputStream fotoLejana,
@FormDataParam(speed_allowed)float velPermitida,@FormDataParam(over_speed)float velVehiculo,
@FormDataParam (片段)InputStream fotoCercana)抛出异常{
OutputStream out;
int读取;
byte [] bytes = new byte [1024];
//保护照片全景照片
出=新FileOutputStream(新文件(dir +\\+ placa +_panoramica.jpg)); ((read = fotoLejana.read(bytes))!= -1){
out.write(bytes,0,read);
while
}
fotoLejana.close();
out.close();
plano_detalle.setFoto_lejos(dir +\\+ placa +_panoramica.jpg);
//新增文件(dir +\\+ placa +_cerca.jpg));
out = new FileOutputStream $(读取= fotoCercana.read(字节))!= -1){
out.write(bytes,0,read);
}
fotoCercana.close();
out.close();
plano_detalle.setFoto_cerca(dir +\\+ placa +_cerca.jpg);
return Response.ok()。build();
$ b
图书馆
jersey-media-multipart-2.26.jar
mimepull-1.9.7.jar
堆栈跟踪
java.lang.NoSuchMethodError:org.jvnet.mimepull.MIMEMessage.close()V
at org.glassfish.jersey.media .multipart.internal.MultiPartReaderClientSide.getMimeParts(MultiPartReaderClientSide.java:276)
at org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide.readMultiPart(MultiPartReaderClientSide.java:231)
at org.glassfish .jersey.media.multipart.internal.MultiPartReaderServerSide.readMultiPart(MultiPartReaderServerSide.java:91)...
我正在使用GlassFish 4.1.1,Java EE 7和Jersey
我想你可能会降级你的jeresy lib。由于泽西岛2.26适用于java ee 8。
I get this error when I do a POST with POSTMAN to my RestService, I searched and just appear libraries problem but i guess i have everything fine.
Web.xml
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>Jersey Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.netbeans.rest.application.config.ApplicationConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
ApplicationConfig.java
@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(resources);
resources.add(MultiPartFeature.class);
return resources;
}
/**
* Do not modify addRestResourceClasses() method.
* It is automatically populated with
* all resources defined in the project.
* If required, comment out calling this method in getClasses().
*/
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(com.src.servicio.service.ServicioREST.class);
}
}
Class
@Path("/service")
public class ServicioREST {
private final java.sql.Date fecha_Actual = new java.sql.Date(new java.util.Date().getTime());
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat dateFormat2 = new SimpleDateFormat("dd-MM-yyyy-HH-mm");
SimpleDateFormat yearformat = new SimpleDateFormat("yyyy");
DateFormat hourFormat = new SimpleDateFormat("HH:mm:ss");
@POST
@Consumes({MediaType.MULTIPART_FORM_DATA})
@Path("test")
public Response prueba(@HeaderParam("token") String token, @FormDataParam("unix_time") String fecha,
@FormDataParam("plate") String placa, @FormDataParam("lng") float longitud, @FormDataParam("lat") float latitud,
@FormDataParam("speed_allowed") float velPermitida, @FormDataParam("over_speed") float velVehiculo,
@FormDataParam("video") InputStream video, @FormDataParam("evidence") InputStream fotoLejana,
@FormDataParam("fragment") InputStream fotoCercana) throws Exception {
OutputStream out;
int read;
byte[] bytes = new byte[1024];
//Guarda la foto panoramica del vehiculo
out = new FileOutputStream(new File(dir + "\\" + placa + "_panoramica.jpg"));
while ((read = fotoLejana.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
fotoLejana.close();
out.close();
plano_detalle.setFoto_lejos(dir + "\\" + placa + "_panoramica.jpg");
//Guarda la foto cercana de la placa del vehiculo
out = new FileOutputStream(new File(dir + "\\" + placa + "_cerca.jpg"));
while ((read = fotoCercana.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
fotoCercana.close();
out.close();
plano_detalle.setFoto_cerca(dir + "\\" + placa + "_cerca.jpg");
return Response.ok().build();
}
}
Libraries
jersey-media-multipart-2.26.jar mimepull-1.9.7.jar
Stack Trace
java.lang.NoSuchMethodError: org.jvnet.mimepull.MIMEMessage.close()V
at org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide.getMimeParts(MultiPartReaderClientSide.java:276)
at org.glassfish.jersey.media.multipart.internal.MultiPartReaderClientSide.readMultiPart(MultiPartReaderClientSide.java:231)
at org.glassfish.jersey.media.multipart.internal.MultiPartReaderServerSide.readMultiPart(MultiPartReaderServerSide.java:91)...
Im working with GlassFish 4.1.1, Java EE 7 and Jersey
I think you may downgrade your jeresy lib. Since jersey 2.26 is for java ee 8.
这篇关于org.glassfish.jersey.server.ContainerException:java.lang.NoSuchMethodError:org.jvnet.mimepull.MIMEMessage.close()V的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!