2014-07-14 4 views
1

나는 서버에서 파일을 업로드하기 위해 저지를 배우고 있습니다. NetBeans를 통해 실행 중이면 Tomcat에서 .war 파일을 배포하면 잘 작동하는 net 코드를 얻을 수 있습니다. 예외가 발생했습니다.TomCat에 jersey 코드를 배포 한 후 예외 발생

<html> 
<body> 
<h1>File Upload with Jersey</h1> 

<form action="rest/file/upload" method="post" enctype="multipart/form-data"> 

    <p> 
    Select a file : <input type="file" name="file" /> 
    </p> 

    <input type="submit" value="Upload It" /> 
</form> 

</body> 
</html> 

내가 필요한 모든 jar 파일 this 링크를 대해 참조 및 추가

<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<display-name>Restful Web Application</display-name> 

<servlet> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.mkyong.rest</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
    <welcome-file-list> 
     <welcome-file> 
      FileUpload.html 
     </welcome-file> 
    </welcome-file-list> 
</web-app> 

UploadFileService을 .class

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

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

    String uploadedFileLocation = "d://uploaded/" 
      + fileDetail.getFileName().substring(2); 


      System.out.println(uploadedFileLocation+"================="+fileDetail.getFileName()); 
    // save it 
    writeToFile(uploadedInputStream, uploadedFileLocation); 

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

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

} 

// save uploaded file to new location 
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(); 
    } 

} 

} 

의 web.xml :

  • 저지 코어 - 1.18
  • ,451,515,
  • 저지 - 다중 - 1.18
  • 저지 - 서버 - 1.18
  • 저지 - 서블릿 1.18
  • ASM-3.1 여전히

내가 예외 아래 얻고있다

exception 

java.lang.IllegalAccessError: tried to access method com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoader()Ljava/lang/ClassLoader; from class com.sun.jersey.spi.scanning.AnnotationScannerListener 
at com.sun.jersey.spi.scanning.AnnotationScannerListener.<init>(AnnotationScannerListener.java:89) 
at com.sun.jersey.spi.scanning.PathProviderScannerListener.<init>(PathProviderScannerListener.java:59) 
at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79) 
at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104) 
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78) 
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89) 
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:700) 
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:678) 
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203) 
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373) 
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556) 
at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4230) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:448) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:552) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) 

Jul 14, 2014 8:00:05 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet /rest threw load() exception 
java.lang.IllegalAccessError: tried to access method  com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoader()Ljava/lang/ClassLoader; from class com.sun.jersey.spi.scanning.AnnotationScannerListener 
at com.sun.jersey.spi.scanning.AnnotationScannerListener.<init>(AnnotationScannerListener.java:89) 
at com.sun.jersey.spi.scanning.PathProviderScannerListener.<init>(PathProviderScannerListener.java:59) 
at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79) 
at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104) 
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78) 
at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89) 
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:700) 
at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:678) 
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203) 
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373) 
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556) 
at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4230) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:448) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:552) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) 

답변

1

내가 발견 Glassfish 만 저지를 지원하지 않습니다. JBoss & TomCat

0

저지에서 Tomcat과 Jetty를 사용하고 있습니다. 그래서 지원됩니다.

문제 해결 방법은 여기에서 저지 번들을 추가하는 것입니다 (http://mvnrepository.com/artifact/com.sun.jersey/jersey-bundle). 최신 버전에서 하나를 선택하십시오. 나는이 문제를 해결하기 위해 1.8을 사용했다.