2011-07-19 47 views
0

部署Maven的web項目,當我嘗試運行我的碼頭項目,我得到這個異常:在碼頭

拋出java.lang.ClassNotFoundException:默認

完整的堆棧:

Launching Jetty with port 8080, context/and webapp path src/main/webapp 
2011-07-19 16:49:56.832:INFO::Logging to STDERR via org.mortbay.log.StdErrLog 
2011-07-19 16:49:56.841:INFO::jetty-6.1.26 
2011-07-19 16:49:57.181:WARN::EXCEPTION 
java.lang.ClassNotFoundException: Default 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401) 
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363) 
    at org.mortbay.util.Loader.loadClass(Loader.java:91) 
    at org.mortbay.util.Loader.loadClass(Loader.java:71) 
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:224) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at net.sourceforge.eclipsejetty.launch.JettyLauncherMain.launch(JettyLauncherMain.java:67) 
at  net.sourceforge.eclipsejetty.launch.JettyLauncherMain.main(JettyLauncherMain.java:50) 
2011-07-19 16:49:57.184:INFO:/:Unavailable javax.servlet.UnavailableException: Default 
2011-07-19 16:49:57.185:WARN::failed Default: java.lang.NullPointerException 
2011-07-19 16:49:57.283:WARN::Failed startup of context  [email protected]{/,src/main/webapp} 
java.lang.NullPointerException 
    at java.lang.Class.isAssignableFrom(Native Method) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:224) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at  net.sourceforge.eclipsejetty.launch.JettyLauncherMain.launch(JettyLauncherMain.java:67) 
at net.sourceforge.eclipsejetty.launch.JettyLauncherMain.main(JettyLauncherMain.java:50) 
2011-07-19 16:49:57.294:INFO::Started [email protected]:8080 

我說它無法加載我的類Default.java(我的項目中唯一的類)。

這裏是我的結構(修訂版)

enter image description here

我使用碼頭插件部署我的項目。 要運行它,我右鍵單擊我的項目,選擇調試AS->調試配置...我選擇一個低於設置:

enter image description here

這裏也是我的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" xmlns:web="http://java.sun.com/xml/ns/javaee/web- app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>ServletWeb-Test</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
    <description></description> 
    <display-name>Default</display-name> 
    <servlet-name>Default</servlet-name> 
    <servlet-class>Default</servlet-class> 
    </servlet> 
<servlet-mapping> 
    <servlet-name>Default</servlet-name> 
    <url-pattern>/Default</url-pattern> 
</servlet-mapping> 

我跑出來的想法,我找不到爲什麼我得到這個錯誤。 我有人可以幫助我,我很樂意欣賞它!

回答

5

你想把你的Java類文件放在src/main/java中,而不是src/main/resources。資源中的文件不會被編譯,因爲它們不應該是源代碼。通常你會把XML描述符文件,圖像文件等放在資源中。

eclipse/maven構建項目時,src/main/resources的內容將被複制到目標文件夾中。

+3

另外,你不應該把類放在默認包中。一些容器和其他技術不能很好地處理默認包。我不確定Jetty是否是其中之一。 –

+0

@ Jon7哼,這很奇怪。當我這樣做時,我右鍵單擊src/main並添加了一個java類。看起來它被自動放入/資源...爲什麼? Ryan:注意。我將把我的課程移到一個命名包中。謝謝。 – Mathieu

+0

@Tigel我不太確定...也許m2eclipse正在表演......這個插件總是一個很好的替罪羊:) – Jon7