【发布时间】:2018-02-04 23:20:56
【问题描述】:
这似乎是重复的,但我发誓我已经阅读了有关 Stack Overflow 的所有答案,但似乎没有什么对我有用。 我正在使用 Eclipse Neon 中的 Jersey 制作文件上传 Web 服务。
服务器:我的 PC 上有 Tomcat 8.5(它是 C 语言,我可以将 WAR 文件放在 webapps 中并运行它),我的 eclipse 上有 GlassFish Server 4。
当我在任何服务器上运行我的应用程序时,它会给出错误 404 not found:
我的包资源管理器如下所示:
之前,我将 org.glassfish servlet 容器名称放在 web.xml 中,所以有时它最终会给出错误 500,这是 Classnot Found,我理解这是因为 glassfish 参考在您拥有球衣 2 时有效.x
老实说,我不明白我做错了什么。我现在真的会拔掉我的头发。我已经为此尝试了一个星期。有人请救我免于神经衰弱。我可能是一个 Java 菜鸟,但几天后我有一个提交,我的毕业就岌岌可危了。帮助!
web.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<display-name>File Upload</display-name>
<servlet>
<servlet-name>Jersey RESTful Application</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.tutorialspoint</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Java 类实现
package com.quratulaind.us3;
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.Path;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.core.header.FormDataContentDisposition; //jersey-core-1.19.4
import com.sun.jersey.multipart.FormDataParam; //jersey multipart jar
@Path("/cv")
public class us3 {
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadCV(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail)
{//saving the file object to the local disk
saveToDisk(uploadedInputStream, fileDetail);
return "File Uploaded Successfully";
}//function uploadcv ends
//Fuction to save uploaded file to disk
private void saveToDisk(InputStream uploadedInputStream, FormDataContentDisposition fileDetail)
{String uploadedFileLocation = "D:\\University Study Stuff\\FYP\\Uploaded CVs For Project"+fileDetail.getFileName();
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();
}//try ends
catch(IOException e)
{e.printStackTrace();}
}//Class ends
}
【问题讨论】:
-
包
com.tutorialspoint是应该在 web.xml 中还是应该是您自己的包根com.quratulaind.us3的名称? -
我会尝试用 com.quratulaind.us3 替换它
-
@SeánHealy 我将其替换并再次导出为 WAR,但问题一直存在
-
@Qurat,您正在混合
jersey 1和jersey 2依赖项。 -
@RishikeshDarandale 您能否详细说明我应该用什么替换?我只需要更换罐子吗? web.xml 还好吗?
标签: java eclipse rest tomcat glassfish