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

查看:1815
本文介绍了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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆