Jetty部署:无法为JSP编译类

时间:2016-06-25 07:24:56

标签: jetty cdi war weld

我尝试从Ant脚本部署并运行Jetty,但出现以下错误:

[jetty.run] 2016-06-25 09:16:54.333: Starting web application null
[jetty.run] [main] WARN org.eclipse.jetty.annotations.ServletContainerInitializersStarter - 
[jetty.run] javax.servlet.ServletException: Not running on Jetty, WebSocket+CDI support unavailable
[jetty.run]     at org.eclipse.jetty.cdi.websocket.WebSocketCdiInitializer.onStartup(WebSocketCdiInitializer.java:49)
[jetty.run]     at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:140)
[jetty.run]     at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:63)
[jetty.run]     at 
...

它可以在没有部署的情况下工作,但是使用war文件会发生这种情况。什么是腐败?

更新:

已添加

<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
  </listener>

  <resource-env-ref>
    <description>Object factory for the CDI Bean Manager</description>
    <resource-env-ref-name>BeanManager</resource-env-ref-name>
    <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
  </resource-env-ref>

到web.xml并将jars转到lib。现在我明白了:

 java.lang.reflect.InvocationTargetException
[jetty.run]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[jetty.run]     at      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[jetty.run]     at ...
[jetty.run] Caused by: java.lang.IllegalStateException: Nothing to bind for name BeanManager

更新2:

好的,我的web.xml中不需要额外的东西。相反,我忘了添加

<typedef name="webApp" classname="org.eclipse.jetty.ant.AntWebAppContext" classpathref="classpath" loaderref="jetty.loader"/>

到build.xml。我现在可以部署和运行jetty,但无法处理JSP文件:

[jetty.run] [qtp1387380406-14] WARN org.eclipse.jetty.servlet.ServletHandler - 
[jetty.run] org.apache.jasper.JasperException: Unable to compile class for JSP
[jetty.run]     at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600) ...

为什么会这样?

1 个答案:

答案 0 :(得分:0)

从项目中删除各种jetty cdi jar文件。

这些专为jetty-distribution使用而设计,不适合embedded-jetty

直接在war文件中使用焊接罐,以及the weld project documentation告诉您的各种推荐配置。