Java servlet rest服务的500-servlet.init()引发异常

Java servlet rest服务的500-servlet.init()引发异常,java,rest,servlets,Java,Rest,Servlets,我已经包括了jar文件jersey-archive-1.18、jersey-multipart.jar和mimepull.jar 这是我在com.mkyong.rest包中的类文件(UploadFileService.java) package com.mkyong.rest; import javax.ws.rs.Path; //import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType;

我已经包括了jar文件jersey-archive-1.18、jersey-multipart.jar和mimepull.jar 这是我在com.mkyong.rest包中的类文件(UploadFileService.java)

 package com.mkyong.rest;

    import javax.ws.rs.Path;
    //import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;

    import javax.ws.rs.Consumes;


    import javax.ws.rs.POST;
    import javax.ws.rs.core.Response;
    import com.sun.jersey.core.header.FormDataContentDisposition;
    import com.sun.jersey.multipart.FormDataParam;


    @Path("/file")
    public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile( @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

        System.out.println("ok");
       /* String uploadedFileLocation = "d://upload/" + fileDetail.getFileName();*/
        String uploadedFileLocation = "d://upload/" + "abc.pdf";

            writeToFile(uploadedInputStream, uploadedFileLocation);

            String output = "File uploaded to : " + uploadedFileLocation;

            return Response.status(200).entity(output).build();

            }

    private void writeToFile(InputStream uploadedInputStream,
                                    String uploadedFileLocation) {
        try {
                OutputStream out = new FileOutputStream(new File(
                uploadedFileLocation));
                int read = 0;
                byte[] bytes = new byte[1024];

                out = new FileOutputStream(new File(uploadedFileLocation));
                while ((read = uploadedInputStream.read(bytes)) != -1) 
                {
                  out.write(bytes, 0, read);
                }
                out.flush();
                out.close();
            } catch (IOException e) {

               e.printStackTrace();
            }
    }

    }
这是Upload.html

<form action="rest/file/upload" method="post" enctype="multipart/form-data" style="margin-top:20px;margin-bottom:30px;width:100%;height:60px;">

    <input type="file" name="file"  class="btn btn-info btn-xm" style="float:left;margin-right:6px;margin-bottom:10px;"/>
    <p>Target Upload Path : <input type="text" name="path" /></p>
    <input type="submit" class="btn btn-warning" value="Upload" style="float:left;" id="Map" value="Map" onclick="showImg()"/>

    <img src="image/loading.gif" id="map_img" style="display: none;"/>
    <span id="countdown" class="btn btn-danger" style="float:right;"></span>

 </form>

将以下代码添加到相应位置的.project文件中

<buildCommand>
        <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
        <arguments>
        </arguments>
</buildCommand>

org.eclipse.wst.jsdt.core.javascriptValidator

您正在使用哪个应用程序服务器?看起来您正在使用tomcat,它是一个web容器,而不是一个完整的应用程序服务器。它不支持CDI开箱即用。是的,我使用的是ApacheTomcat服务器。实际上在这之前,我写过一个rest服务,它可以将文件从一个驱动器传输到另一个驱动器,并且工作正常。是否存在依赖关系或配置问题?可能是stacktrace中存在inject.错误。如果你把这个建立在TomEE的基础上会怎么样?我还没有在TomEE上试过。好的,我给我试试这个。
javax.servlet.ServletException: Servlet.init() for servlet Jersey REST Service threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:515)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1012)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:642)
    org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1555)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)
root cause

com.sun.jersey.spi.inject.Errors$ErrorMessagesException
    com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
    com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
    com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)
    com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:491)
    com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:321)
    com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
    com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559)
    javax.servlet.GenericServlet.init(GenericServlet.java:160)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:515)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1012)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:642)
    org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1555)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)
<buildCommand>
        <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
        <arguments>
        </arguments>
</buildCommand>