java - 将 Liferay jersey portlet 部署到 Tomcat 会抛出异常 java.lang.ClassNotFoundException : com. sun.jersey.spi.container.servlet.ServletContainer

标签 java maven tomcat jersey liferay

我似乎在将我的 portlet war 部署到 Liferay 服务器时抛出 java.lang.ClassNotFoundException,在 eclipse (Indigo) 中运行服务器时也会发生这种情况。在将它转换为 Liferay portlet 之前,我确保我的 Jersey 服务在 Tomcat 7.1 上工作。谢谢。

堆栈跟踪是

17-Oct-2013 14:13:33 org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /spike-jersey-new-portlet threw load() exception
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5123)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5407)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

我的 WebService 类看起来像

@Path("/mymessage")
public class WebService
{
       @GET
       @Path("hello")
       @Produces(MediaType.APPLICATION_JSON)
       public String myMethod()
      {   
             return "HELLO";
      }
}

我的 web.xml 看起来像

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>spike-jersey-new-portlet</display-name>

<jsp-config>
    <taglib>
        <taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri>
        <taglib-location>
            /WEB-INF/tld/liferay-portlet.tld
        </taglib-location>
    </taglib>
</jsp-config>

<servlet>
      <servlet-name>spike-jersey-new</servlet-name>
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
      <init-param>
                <param-name>com.sun.jersey.config.property.packages</param-name>
                <param-value>com.spike.jersey</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
   </servlet>

<servlet-mapping>
             <servlet-name>spike-jersey-new</servlet-name>
             <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

</web-app>

和 pom.xml 依赖

<dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
</dependency>

<dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.8</version>
</dependency>

最佳答案

问题是我正在部署一个使用 Liferay 插件构建的 Liferay portlet,我已将其转换为 Maven 项目,而插件部署没有获取 Maven 依赖项。

关于java - 将 Liferay jersey portlet 部署到 Tomcat 会抛出异常 java.lang.ClassNotFoundException : com. sun.jersey.spi.container.servlet.ServletContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19429654/

相关文章:

java - 使用 pdfcopy 创建 pdf 时返回空文档

java - Maven 中大量继承的单一插件配置文件是个好主意吗?

Maven+Nexus+Jenkins SSL证书错误

java - 在 tomcat 管理器中,如何限制用户只能部署/取消部署特定应用程序?

tomcat - 带有 application.groovy 的 Grails3 在 Tomcat 中显示损坏的页面

java - .class 文件必须位于何处才能被从 Intellij Idea 启动的 Tomcat 6 找到为爆炸式 WAR?

c# - 我什么时候应该为我的类型定义哈希码函数?

java - 使用导入范围功能下载文件时出错

java - Tomcat - Mysql -Persistence ...无法创建资源

maven - 如何在执行 maven-resources-plugin :copy-resources 时在 Maven 复制资源过程中失败,而不是跳过不存在的资源目录