`

Sakai Demo搭建及遇到的问题汇总

 
阅读更多

转载请注明出处哦~

http://uuflower.iteye.com/blog/1873300

 

最近在调查LMS的开源平台,考虑再三后,计划借鉴Sakai平台,但由于java是0基础,遇到了n多诡异问题,今天终于把这个最简单的Demo搭建弄好了,特意把遇到的问题整理一下,希望像我一样是0基础的人,遇到此类问题,能更顺利地解决。

 

了解Sakai的人估计知道,现在有两个版本:CLE(目前最新的是2.9.1)、OAE(目前最新的是1.4.3),为了权衡这两个平台,先把Demo搭起来对比下,OAE的相对简单,CLE Demo的搭建是一波三折,这里就详细说下这个吧。

 

1、背景

1)搭建环境:windowsXP 内存2G

2)Sakai版本:2.9.1

3)机器已安装并配置Java环境(关键注意环境变量哦)

具体的配置方法可以baidu、google,这个就不说了 。

我机器装的是JDK1.6,具体的版本信息如下:

 

  

2、demo包下载

 

从官网上下2.9.1版本的zip包:

http://source.sakaiproject.org/release/2.9.1/

 

3、解压包

将包解压到指定目录。

这个目录自己可以随便放,不过,路径上最好不要有空格哦,网上有人说有空格会有问题,不过我没试过。

 

4、按照解压文件夹下的说明启动

在\sakai-demo-2.9.1文件夹下,有一个文件demo_readme.txt,是官方的安装说明文档。

简单说Windows下的安装步骤如下:

 

1)启动方法:

开始-》运行-》输入“cmd”启动命令窗口,切换目录到sakai-demo-2.9.1文件夹下;

输入“start-sakai.bat”,启动这个脚本,下面这个是我的启动页面:

 

理论上程序会自动启动tomcat,跳出来熟悉的tomcat启动框了,然后看着tomcat哗哗的启动log从屏幕上跑过,直到tomcat启动完毕;

然后,在浏览器中,输入如下URL即可以看到Sakai的真面目了:

http://localhost:8080/portal

 

2)关闭

步骤与启动一样,唯一不一样执行的脚本是stop-sakai.bat。

 

5、悲催问题整理

上面的步骤看起来很简单人性化哈,但悲催的我生生折腾了两天才折腾好,下面就把我遇到问题整理下,大家一起happy下吧:

 

启动时,输入“start-sakai.bat”后,只显示了上面图中的类似信息,没有启动tomcat。

 

1)环境变量的恶作剧---CATALINA_HOME

baidu、google时,发现有好心网友提醒,如果机器已安装配置过tomcat,原tomcat配置的CATALINA_HOME环境变量会对Sakai Demo自带的tomcat有影响。

仔细观察了下,确实是引用了当前环境变量,导致使用错误的文件。

 

大喜,修改后,再次启动,依旧;有点恼火,但,转念一想,刚刚解决的问题,让咱们离成功近了一步,该高兴。

继续……

 

2)端口到底占用了没?

再次研究demo_readme.txt,发现有如下内容:

 

Problems getting started
-----------------------------------------------------

1) Sakai's Tomcat will run on port 8080, and also make use of ports 8005 and 8009.
   If another process is running on any of these ports, Sakai will not start up.

 

2) Sakai's Tomcat will find itself relative to the startup directory.  Always start it from the sakai-demo folder.
   If you have an environment variable CATALINA_HOME set to another Tomcat, this will interfere with Sakai's startup.

 

第二个问题,咱们在第一步已经解决了,下面就看看这个端口到底占用了没有:

 

首先,在命令窗口中,输入“netstat -ano|find "8080"”查看是否有程序占用了该端口。

如果回车后,没有任何输出结果,说明没有程序占用该端口,说明不是端口被占用导致的问题。

如果有输出内容,看下占用程序最后一列的内容是多少,这一列标识的是程序的pid。

 

然后,输入指令“tasklist”,在输出列表中,查找对应pid的程序是什么

 

如果确实被占用了,退出占用程序,或修改tomcat的使用端口,推荐第二种。

 

修改的端口方法与普通tomcat一样,进入sakai-demo-2.9.1\conf\server.xml,修改tomcat使用端口:

 

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 

我改成了8088,默认的是8080哦。

 

注意,端口号改了后,开启Sakai的URL中的端口号也得变哈,别忘了:

http://localhost:8088/portal

 

再试一次,冥冥中觉得,这不是问题的关键,试下吧……果然,tomcat还是纹丝不动呢哭

 

再查……

 

3)到底是啥阻碍了我与tomcat

到底是啥原因导致tomcat启动不起呢,上面的命令窗口没有任何提示信息,

好吧,我手动进入bin目录,手动启动start.bat,哈哈,有反应,看到tomcat log噌噌跑,有谱……

好景不长,等了5min左右,tomcat启动窗口不见了,自动关闭了!!!

 

为啥?

到logs目录下看所有log文件,找到catalina的log(我的是catalina.2013-05-22.log),打开发现tomcat的启动错误信息如下:

 

2013-5-22 9:25:44 org.apache.catalina.core.ContainerBase addChildInternal
严重: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/osp-common-tool]]
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
 at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:932)
 at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1329)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
 at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
 at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:334)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041)
 at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
 at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:621)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
 at org.apache.tomcat.util.threads.DedicatedThreadExecutor.execute(DedicatedThreadExecutor.java:62)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5220)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
 ... 29 more
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
 at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
 at java.util.concurrent.FutureTask.get(FutureTask.java:83)
 at org.apache.tomcat.util.threads.DedicatedThreadExecutor.execute(DedicatedThreadExecutor.java:56)
 ... 31 more
Caused by: java.lang.OutOfMemoryError: Java heap space

……

又是一阵google baidu,修改JAVA_OPTS、CATALINA_OPTS的配置内存大小,参照修改后,再次启动,OK,tomcat自动启动起来了,狂喜……

 

好景不长,过了大约三四分钟,tomcat卡住了,

在tomcat窗口,看到“java.lang.OutOfMemoryError: PermGen space ”错误提示信息

 

吐血,再次google baidu,终于找到一个相当靠谱的方案及解释,推荐大家参考:

http://hi.baidu.com/gonervergiveup/item/3c7a9b374f29749db80c03a9

----------------------------------------------------------------------------------------------------

1、首先是:java.lang.OutOfMemoryError: Java heap space

解释:

Heap size 设置

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.

JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。

可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,

一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

解决方法:

手动设置Heap size
修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

或修改catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

2、其次是:java.lang.OutOfMemoryError: PermGen space

原因:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法:

1. 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

catalina.sh下为:
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"

 

4)终极解决方案

根据上面的粗体提示,用文本文件打开sakai-demo-2.9.1\start-sakai.bat,添加-Xms32m,修改-Xmx256m,和其他所有带XXXm的数字,下面是我的修改数据(我机器的内存是2G):

set JAVA_OPTS=-server -Xms32m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Dhttp.agent=Sakai -Dsakai.demo=true -Djava.awt.headless=true -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dorg.apache.jasper.compiler.Parser.STRICT_WHITESPACE=false -Dsun.lang.ClassLoader.allowArraySyntax=true


set CATALINA_OPTS=-server -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Dhttp.agent=Sakai -Dsakai.demo=true -Djava.awt.headless=true -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dorg.apache.jasper.compiler.Parser.STRICT_WHITESPACE=false -Dsun.lang.ClassLoader.allowArraySyntax=true

 

上面粗体部分是我修改或添加的内容。

保存后,再次按照在命令行中启动指令“start-sakai.bat”,成功自动启动tomcat……然后等待5~6min后,tomcat启动完毕,hoho

 

那试试ok了不,在浏览器中输入URL:http://localhost:8088/portal

oho,终于看到Sakai的真面目了,眼泪哗哗地啊:

用户名、密码都是admin,记得哈



 

 

 6、总结

要不是被逼着,这个问题还不知道啥时候能搞定呢,通过本次事件,得到两个经验教训:

1)网络的力量是无穷的,没有前面兄弟的泣血共享,我也不能解决遇到的问题。

再次感谢慷慨共享的兄弟们,完事我也自己整理了一份,供后来者参观。

 

2)相信问题终将解决

别人能搞定的问题,咱们一样也能搞定,只是时间长短的问题。

在这个浮躁的社会,没有信仰是可怕的,鉴于历朝各代的宗教统治,推荐大家,信春哥吧~~不求永生但求有房有xifu大笑

 

 

  • 大小: 2.2 KB
  • 大小: 5 KB
  • 大小: 45.2 KB
分享到:
评论

相关推荐

    Python课程设计 课设 手写数字识别卷积神经网络源码+文档说明.zip

    高分设计源码,详情请查看资源内容中使用说明 高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明高分设计源码,详情请查看资源内容中使用说明

    SpringBoot2.0快速开发框架权限.rar

    SpringBoot2.0快速开发框架权限.rarSpringBoot2.0快速开发框架权限.rarSpringBoot2.0快速开发框架权限.rar

    大语言模型的微调和推理baichuan7B, chatglm2-6B, Qwen-7B-chat源码.zip

    详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;

    基于Qt与STM32平台开发的汽车车机系统上位机

    基于Qt开发的汽车车机系统上位机 & 常见类型汽车传感器信号模拟发生器 任务和要求: 任务: 根据发动机测控系统信号需求,设计一套发动机信号模拟器人机交互系统,能够根据需要向下位机输出控制信号,使其输出发动机测控系统需要的传感器模拟信号,给发动机测控系统的开发提供方便。 要求: 1.设计应包含上位机与下位机的交互程序及人机交互界面的设计,与下位机设计相结合,使其能够实现全部类型发动机传感器信号的模拟输出及显示。 2.设计中需要采用模块化开发程序。 3.所设计的人机交互界面简洁合理。 4.应考虑所设计系统的实用性。 具体工作内容: 1.根据设计目标,查阅相关设计标准和设计方法资料,对发动机信号模拟器设计中的关键工程原理和工程方法进行提炼,并围绕关键问题进行国内外设计现状调研,开展分析、评价与总结,确定主要研究内容,制定设计技术路线,制定设计计划(周进度),撰写开题报告,并进行开题答辩,开题报告参考文献应不少于15篇(其中外文文献不少于 4 篇,近五年文献不少于三分之一)。 2.根据设计要求和技术指标,进行满足功能原理需求的多方案拟定,考虑安全、 标准等多因素进行技术性与经济性评价

    实验-三、数据库安全性(目的、要求和模板).doc

    实验-三、数据库安全性(目的、要求和模板).doc

    毕设绝技 - 4天玩乐完成商城系统完整资料day02

    文件为第二天视频教程 在毕业设计的挑战中,有时我们需要以极短的时间完成一个相对复杂的项目,比如一个商城系统。虽然时间紧迫,但只要我们合理规划、高效执行,完全有可能在4天内完成一个基础且功能完备的商城系统。 商城系统,也被称为网上商城系统或Online Mall system,是一种功能完善的网上销售系统。该系统主要包括产品发布、在线订购、在线支付、在线客服等功能模块,旨在为企业或个人提供一个在线销售平台,实现商品的展示、交易和客户服务。 商城系统具有多种核心功能,如商品管理、订单管理、用户管理和营销管理。商品管理功能支持商品的添加、编辑、删除、分类和搜索,满足商家对商品信息的全面管理需求。订单管理功能则涵盖订单的生成、支付、发货、退款和评价等环节,确保交易流程的顺畅进行。用户管理功能包括用户的注册、登录、个人信息管理和收货地址管理等,提升用户体验。而营销管理功能则通过促销活动的设置、优惠券的发放和积分兑换等手段,帮助商家提升销售业绩。 商城系统的特点主要体现在功能性、易用性和安全性上。商城系统注重功能性的开发,每个功能都有其发挥作用的地方,满足商家的实际需求。

    忻州师范学院-论文答辩PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    小型餐饮管理系统-数据库设计报告.doc

    小型餐饮管理系统-数据库设计报告.doc

    毕业设计+Python+基于OpenCV的交通路口红绿灯控制系统设计+Sqlite +PyCharm 1.zip.zip

    本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!

    西南交通大学-毕业答辩PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    2024年中国中空纤维膜行业研究报告.docx

    2024年中国中空纤维膜行业研究报告

    四川师范大学-PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    实验三、数据库安全性实验报告.doc

    实验三、数据库安全性实验报告.doc

    西北农林科技大学-PPT模板我给母校送模板作品.pptx

    PPT模板,答辩PPT模板,毕业答辩,学术汇报,母校模板,我给母校送模板作品,周会汇报,开题答辩,教育主题模板下载。PPT素材下载。

    java电子相册源码.rar

    java电子相册源码.rarjava电子相册源码.rarjava电子相册源码.rarjava电子相册源码.rar

    玉米脱粒机设计及其总装配图(论文、dwg图).rar

    玉米脱粒机设计及其总装配图(论文、dwg图)

    studyopencv2

    studyopencv2

    2024-2030全球与中国牛肉卷饼市场现状及未来发展趋势.docx

    2024-2030全球与中国牛肉卷饼市场现状及未来发展趋势

    在KITTI车辆数据集,采用随机多尺度变化增强车辆训练集样本数量,采用k-means聚类获取最优先验候选框大小

    在KITTI车辆数据集,采用随机多尺度变化增强车辆训练集样本数量,采用k-means聚类获取最优先验候选框大小,引入到YOLOv3模型中,提升模型的车辆检测精度和鲁棒性。.zip

    基于Vue+SSM高校疫情信息管理系统源码.zip

    详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;详情请查看资源内容中使用说明;

Global site tag (gtag.js) - Google Analytics