Java 如何在IDEA中构建.war文件以部署到Liferay?

Java 如何在IDEA中构建.war文件以部署到Liferay?,java,intellij-idea,liferay,portlet,liferay-6,Java,Intellij Idea,Liferay,Portlet,Liferay 6,我有一个现有portlet的源代码。我对它做了一些修改以修复一些错误,现在我需要将固定源部署到liferay。我使用工件选项构建war文件,并像往常一样部署这个war文件。但是我仍然无法在页面上添加我的portlet,因为我在列表中没有看到它。我做错了什么 如果重要的话,我会使用Idea 11.1和liferay 6.0.6 似乎是错误的war文件出现了问题,因为其他war文件(我自己没有编译)已成功部署 另外,如果重要的是我在构建工件时创建了war文件,不要使用Ant 日志: 看起来它在部署

我有一个现有portlet的源代码。我对它做了一些修改以修复一些错误,现在我需要将固定源部署到liferay。我使用工件选项构建war文件,并像往常一样部署这个war文件。但是我仍然无法在页面上添加我的portlet,因为我在列表中没有看到它。我做错了什么

如果重要的话,我会使用Idea 11.1和liferay 6.0.6

似乎是错误的war文件出现了问题,因为其他war文件(我自己没有编译)已成功部署

另外,如果重要的是我在构建工件时创建了war文件,不要使用Ant


日志:

看起来它在部署时崩溃了。因为当我尝试部署有效的portlet时,日志中还有一些额外的信息,比如

09:13:37,874 INFO  [PortletHotDeployListener:220] Registering portlets for Comply-Activities-portlet
09:13:37,976 INFO  [PortletHotDeployListener:369] 1 portlet for Comply-Activities-portlet is available for use


UPD:也许有人会教我如何正确地构建*.war?我认为这就足够了。

首先尝试从bundles/tomcat/webapps中取消部署portlet-删除portlet目录。然后再次部署portlet。

确保
liferay display.xml
位于war中的
WEB-INF
目录中,并且其内容正常

它应该包含如下内容:


也许建造系统在制造战争时遗漏了它

如果没有,手动把它放在那里,看看是否有效

编辑

嗯。现在有了更多的信息,您的war中似乎包含了
ServletAPI
。该jar(及其内部的类)由门户(或者更具体地说,由servlet容器)提供。这同样适用于
PortletAPI
。您不应该将它们包括在已部署的应用程序中


检查这些依赖项是否在pom.xml中指定为提供的

使用ant构建项目,创建war,现在它就可以工作了。但也许不需要使用ant就可以做到这一点,只有使用IDEA。我需要检查它。

您是“像往常一样”部署它“像往常一样部署到您的应用服务器”还是“像往常一样通过Liferay的部署目录”?您在日志文件中看到了什么?有什么问题吗?“1个portlet用于…您的插件…准备好使用”?像往常一样,我的意思是粘贴到部署目录。日志也可以。我认为问题出在错误的war中,而不是在liferay中,因为我毫无疑问地部署了其他Portlet。您使用什么来构建war?最初,我使用IDEA构件来构建这个文件创建war构件。但现在我用Ant构建了它,它可以工作了。但我认为只使用创意来源是可能的,但我现在太忙了,没有时间检查我的创意。我把它从软件包中删除了,但无论如何都没有帮助。你以前粘贴的另一个日志中写了什么?谈到Servlet.class的那个?它不在日志中,而是在命令提示符中。事实上,今天我在一个稍有不同的环境中工作,无法复制it@Ph0en1x应该通过删除ServletAPI来解决您之前发布的问题。也许在您的war中门户提供了另一个依赖项。检查PortletAPI、数据库驱动程序(若在门户的lib文件夹中有)等,但未成功。我尝试删除库,直到没有得到09:18:10267错误[PortletBagFactory:115]java.lang.ClassNotFoundException:com.structuredria.portlet.database.DatabasePortlet
09:13:37,874 INFO  [PortletHotDeployListener:220] Registering portlets for Comply-Activities-portlet
09:13:37,976 INFO  [PortletHotDeployListener:369] 1 portlet for Comply-Activities-portlet is available for use