我已经创建了Openshift应用程序,现在我正在尝试编辑它。 这是项目结构:
http://my.jetscreenshot.com/demo/20130525-t2mt-28kb
我已将此代码添加到index.html:
<form action="/uploadFile" enctype="multipart/form-data" method="post">
<input type="file" name="uploadFile" />
<input type="submit" />
</form>
最后我创建了servlet文件fileUploader.java:
package main.java;
import *;
@WebServlet(name = "uploadFile",urlPatterns = {"/uploadFile"})
@MultipartConfig
public class fileUploader extends javax.servlet.http.HttpServlet {
//class code
}
你可以在这里看到@WebServlet注释,我读到它是应该的,但它不起作用(404错误),所以我在web.xml中添加了代码:
<servlet>
<servlet-name>uploadFile</servlet-name>
<servlet-class>main.java.fileUploader</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>uploadFile</servlet-name>
<url-pattern>/uploadFile</url-pattern>
</servlet-mapping>
并且index.html有效,但servlet没有。它现在给出500错误:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Wrapper cannot find servlet class main.java.fileUploader or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:722)
root cause
java.lang.ClassNotFoundException: main.java.fileUploader
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
我对这个问题进行了研究,但我仍然不知道问题出在哪里
答案 0 :(得分:1)
如果你正在使用Maven来构建你的WAR,它可能是从src/main/java
到WEB-INF/classes
的包装类,而不是src
文件夹。区别在于Maven认为您的类在默认(无命名空间)包中,即没有任何包语句。
但是您的Eclipse配置了src
作为源目录而不是src/main/java
,因此它向您的类添加了package main.java;
语句,这些语句现在与Maven默认值冲突。
在Eclipse中,右键单击src
&gt;构建路径&gt;从构建路径中删除。然后导航到src\main\java
并右键单击&gt;构建路径&gt;添加为源目录。让Eclipse修复你的包语句,即删除package main.java;
或创建包{/ 1}}等包文件夹。 (顺便说一下,不推荐使用类似名字的驼峰盒。)
答案 1 :(得分:0)
希望您已将fileUploader Servlet类放入 WEB-INF / classes / main / java目录。
或
你已经找到了包含你的fileUploader类的lib WEB-INF / lib direcotyry