【问题标题】:Deploying a Maven web project on Jetty在 Jetty 上部署 Maven Web 项目
【发布时间】:2011-10-08 21:49:53
【问题描述】:

当我尝试在 Jetty 上运行我的项目时,我得到了这个异常:

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     org.mortbay.jetty.webapp.WebAppContext@5f1eb199{/,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 SocketConnector@0.0.0.0:8080

我说它无法加载我的类 Default.java(我项目中唯一的类)。

这是我的结构(已更新)

我使用 Jetty 插件部署我的项目。 要运行它,我右键单击我的项目并选择 Debug As-> Debug Configurations... 然后选择下面设置的那个:

这也是我的 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>

我没有主意了,我找不到为什么会出现这个错误。 有人可以帮助我,我将不胜感激!

【问题讨论】:

    标签: java eclipse maven-2 jetty


    【解决方案1】:

    您希望将 Java 类文件放在 src/main/java 中,而不是 src/main/resources 中。资源中的文件不会被编译,因为它们不应该是源代码。通常你会把xml描述符文件、图像文件等放在资源中。

    当 eclipse/maven 构建你的项目时,src/main/resources 的内容将被复制到你的目标文件夹中。

    【讨论】:

    • 另外,您不应该将类放在默认包中。一些容器和其他技术不能很好地处理默认包。我不确定 Jetty 是不是其中之一。
    • @Jon7 嗯,这很奇怪。当我这样做时,我右键单击 src/main 并添加了一个 java 类。看起来它是自动放在 /ressource 中的……这是为什么呢?瑞恩:注意到了。我将把我的班级移到一个命名的包中。谢谢。
    • @Tigel 我不太确定......也许 m2eclipse 正在起作用......那个插件总是一个很好的替罪羊:)
    • 可悲的是,这似乎不是问题。我更新了我的项目结构。查看更新的问题:)
    • 好的,我知道了。我忘记编辑 web.xml 文件中的 标记内容以反映新的包结构。应该是 packageName.Default 而不仅仅是 Default。谢谢你的帮助! :)
    猜你喜欢
    • 2023-03-10
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 2014-11-26
    相关资源
    最近更新 更多