文档章节

Liferay 6.1开发学习(五):编译调试修改源码【转】

攻城狮不是猫
 攻城狮不是猫
发布于 2015/07/02 09:09
字数 1393
阅读 33
收藏 0

一、导入源码

源码可以从Liferay的官方网站上下载。http://www.liferay.com/downloads/liferay-portal/available-releases

下载后解压源码,可以使用EclipseFile-->Import-->General-->Existing Projects in to Workspace。将解压的源码导入到Eclipse中。

导入源码后,如果是6.1.1的源码,可能会出现如下的错误:Project 'portal-trunk' is missing required source folder: 'portal-web/test'。此错误是说在build path下面找不到test目录。解决方法有两个(6.2.0中导入源码后,也有类似问题,解决方法同下面两个原理一样):

1、在portal-web下面建立一个名为test的目录。

2、打开源码工程目录下面的.classpath文件(使用文本编辑器打开,editplusnotepad++),在其中找到<classpathentry excluding="**/.svn/**|.svn/" kind="src" path="portal-web/test"/>(大概在11行),将此行注释掉或删除。然后回到Eclipse中刷新工程(选中工程按F5,或在右键菜单中选择刷新)。

二、编译源码

既然要调试源码,首先是需要能够对源码进行编译。Liferay的源码不是一个普通的Web工程,不能使用普通的方法进行编译部署。但liferay官方已经提供了相应的ant脚本进行编译部署,但首先还需要一些简单的设置。

1、打开liferay的源码目录,找到app.server.properties文件。

2、将些文件复制一份,重命名为app.server.username.properties的文件,其中的{username}为当前系统的帐号名称。如我的系统帐号是huqiwen,则将其命名为app.server.huqiwen.properties即可。具体的可以打开CMD,以里面显示用户名为准。如下图:

3、打开此文件,找到app.server.parent.dir=${project.dir}/../bundles。将后面的${project.dir}/../bundles替换为下载的绑定LiferayTomcat的路径,如我的为E:/code/liferay6.1/liferay-portal-6.1.1-ce-ga2,则修改后的地址为: app.server.parent.dir=E:/code/liferay6.1/liferay-portal-6.1.1-ce-ga2注意:从地址栏里面复制的地址为正斜杠,请修改成反斜杠。

4、现在Eclipseant面板里面点击,add buildfiles,将portal源码里面的build.xml文件添加到ant面板里面。

5、点开此build文件,先点击compile,再点击deploy,即可将源码编译部署到tomcat中。

三、debug源码

在二的基础上deploy后,即可对liferay的相关源码进行编译调试。如果是第一次进行debug,可能会跳转到显示Source not found,此时,点击下面的“edit source lookup path,在弹出的对话框里面点击Add -->Java Project,在这里将我们的Portal-trunk工程勾选上,点击OK等,即可开始Liferay的源码调试。

四、常见问题

1、在编译的时候出现如下错误

Task cannot continue because ECJ is not installed.

ECJ was automatically installed. Please rerun your task.

这个问题在前面的博客里面提到过,http://www.huqiwen.com/2012/09/01/liferay-6-1-development-study-2-create-portlet-project/

解决方法为:

原因是ECJ包没有找到,ECJ是什么?ECJ, the Eclipse Compiler for Java, is an open source incremental compiler used by the Eclipse JDT. It is an option for Liferay builds and is in many cases faster than Javac or Jikes. The jar for ECJ is included in Liferay release 4.4.0 and later.http://www.liferay.com/community/wiki/-/wiki/Main/ECJ这是官方解释。大概意思是ECJ是一个编译优化包,可以提升比JavacJIKES更好的编译速度。要想使编译通过,有两个两个方法:

方法一:禁用ECJ。在LiferaySDK下面找到build.Administrator.properties,此处中间的Administrator名称不一定是这样的,具体体系名称是根据当前系统的用户名生成的。在里面添加如下内容

javac.compiler=modern
#javac.compiler=org.eclipse.jdt.core.JDTCompilerAdapter

方法二:将ECJ的包添加到ant的路径里面。ecj.jar包可以在Liferay的工程的源码包\lib\development下面找到。将此包添加到ant的路径里面。Windows-->preferences-->Ant-->Runtime,在右边的Classpath-->Ant Home Entries(Default) -->Add External JARs,将ecj包添加进来。

2、在编译源码的时候出现:

Please set the environment variable ANT_OPTS to the recommended value of
"-Xmx1024m -XX:MaxPermSize=512m".

这个提示的意思是说当前的JVM参数设置的太小了,不够liferay编译使用,需要增加JVM内存的分配,并建议将Xmx参数设置成1024mMaxPermSize设置成512m。这是因为liferay的源码比较大,内容比较多,使用了大量的classloader等,需要比较大的内存。

解决方法上面已经给出提示了将环境变量(其实就是JVM的参数)推荐设置成上面的提示。

1)在Liferay工程的源码里面的build.xml上点击右键-->Run as-->External Tool Configurations

2)在tab标签里面找到Environment,点击new,name里面输入ANT_OPTS,value里面输入-Xmx1024m -XX:MaxPermSize=512m,然后点击apply

3)再次运行ant的编译,即可正常编译。

3、如果出现类似如下错误,请参考上文的“二、编译源码”

Tomcat is not installed in E:/liferay/6.2/bundles/tomcat-7.0.42. If you already have Tomcat
installed, make sure the property "${app.server.tomcat.dir}" points to your
Tomcat installation. If you wish to automatically install Tomcat into

© 著作权归作者所有

共有 人打赏支持
攻城狮不是猫
粉丝 3
博文 57
码字总数 86313
作品 0
杭州
程序员
私信 提问
liferay学习(源码调试问题)

环境搭建: liferay-portal-tomcat-6.2-ce-ga4-20150416163831865.zip liferaytomcat服务器 liferay-ide-eclipse-windows-x64-2.2.4-ga5-201507230603.zip liferayIDE开发工具 liferay-port......

继仕zac
2015/08/13
0
1
在Tomcat 6.0.33上安装Liferay 6.1.0 CE的步骤

一、准备工作 下载tomcat 6.0.33, liferay 6.1.0 CE的war文件包、源码包、SQL脚本包以及附加依赖包。本例子采用Mysql数据库作为存储引擎,故请安装Mysql数据库并确保mysql服务已经启动。由于...

mj4738
2012/05/27
0
0
编译liferay 6.0.6

本文以tomcat 7.0.27和liferay 6.0.6为例,详细讲述如何从liferay 6.0.6源码编译出整套liferay 应用. 设BASEDIR=D:java为顶层目录, 将liferay 6.0.6源码包解压到$BASEDIR, 将tomcat解压到$...

mj4738
2012/10/29
0
0
Liferay开发学习Part3:5种开发模式

Liferay共有5种开发模式: portlet(portlet插件):其结构和内容和普通的WEB工程区别不大 portlet-ext(portlet扩展插件):不推荐 layout(布局):可定制布局 theme(主题):主题包,通过此模式提...

派卡琪安
2013/01/25
0
0
Liferay Portal 6.1 CE 发布

Liferay 的新版本旗舰软件产品 Liferay Portal 6.1 CE 今天发布![下载][快速开始] Liferay 的产品团队和开发团队与我们优秀的社区协调一致,历时数月致力于 6.1 的发布,现在终于大功告成。...

红薯
2012/02/24
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
C++网络编程(一)gRPC的编译

Google是真滴烦,整个编译链全是自家产品,在编译之前先来安装一堆东西 安装环境依赖 chocolatey Windows下的包管理系统,没有他就慢慢去下载下面的一堆乱七八糟的东西吧。CMD下执行下面这句...

Pulsar-V
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0
手机通过wifi遥控arduino

手机下载Blinker 从Blinker官网下载手机App,安装到手机。 手机连接WiFi。 点击我的设备右上角的"+"添加设备,选择Arduino -> wifi接入,复制密钥以备后续使用。 点击新建的设备,可以在新界...

davidwbnu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部