为什么这个java servlet不起作用[OpenShift+Tomact6+Git+Jboss]



我已经创建了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.

我对这个问题做了研究,但我仍然不知道问题在哪里

如果您使用Maven来构建WAR,它可能是从src/main/java打包到WEB-INF/classes的类,而不是从src文件夹。不同之处在于Maven认为你的类在默认包中(没有命名空间),即没有任何包语句。

但是您的Eclipse配置了src作为您的源目录,而不是src/main/java,因此它在您的类中添加了package main.java;语句,这现在与Maven默认值冲突。

在Eclipse中,右键单击src> Build Path> Remove from Build Path。然后导航到srcmainjava,右键单击>构建路径>添加为源目录。让Eclipse也修复您的包语句,例如,删除package main.java;或创建像srcmainjavamainjavafileUploader.java这样的包文件夹。(顺便说一下,不建议在类名中使用驼峰大小写)

希望你已经把你的fileUploader Servlet类web - inf/classes/主/java目录。

您已经放置了包含fileloader类的库web - inf/lib direcotyry

最新更新