2021SC@SDUSC
本文采用的是下载源码并利用idea安装依赖、进行配置的方法
openmeetings6.10源码下载地址: Github apache/openmeetings
官方源码运行教程:Apache OpenMeetings Project – Build instructions
配置需要:
- Oracle JDK11(及以上,我用的是JDK13)
- Apache Maven 3.5.0(及以上,我用的是3.8.2)
配置步骤:
- 下载源码
- 安装依赖
- 启动服务器
- 按照网页的安装指示进行安装
踩坑一:输入安装依赖命令后会报错 Too many files with unapproved license
将整个openmeetings文件夹导入idea后,idea会自动构建,构建完成后,我按照官网的指示执行了
mvn clean install -P allModules
命令,但是当安装到openmeetings-web文件夹下的依赖时,它报错Too many files with unapproved license,上网查了解决方案,需要在后面添加
-Drat.numUnapprovedLicenses=100
即修改指令为:
mvn clean install -P allModules -Drat.numUnapprovedLicenses=100
即可解决
解析:
这个错误说的是使用未经批准的许可证的文件太多,然后添加的-Drat.numUnapprovedLicenses=100
指的是允许使用未经批准的许可证的文件的数量不超过100
(参考链接:解决org.apache.rat:apache-rat-plugin:0.8:check (default) on project hbase: Too many unapproved license)
并且这段代码不能在power shell中写,如果要在power shell中写似乎得加上引号,直接使用最好用windows自带的命令行,或者在idea的Terminal里面写。
踩坑二:openmeeting-web里的addFileTest类报错:getWidth()和定义的width不相同
报错信息:
[ERROR] Failures:
[ERROR] TestFileService.addFileTest:68 Width should be determined ==> expected: <150> but was: <null>
去翻了源代码,它是这样写的:
assertEquals(width, cr.getObj().getWidth(), "Width should be determined");
assertEquals的作用:1. 如果两者一致, 程序继续往下运行. 2. 如果两者不一致, 中断测试方法, 抛出异常信息
这个addFileTest.java文件应该跟上传图片有关,我也不知道这个问题该怎么解决,我很简单粗暴地把有assertEquals的两行代码注释掉,然后安装就可以继续往下进行了。。。
踩坑三:Tomcat报错启动过滤器异常
Tomcat Server报错:
27-Sep-2021 21:47:06.751 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到
27-Sep-2021 21:47:06.751 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[]启动失败
27-Sep-2021 21:47:06.912 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks web应用程序[ROOT]创建了一个ThreadLocal,其键类型为[java.lang.ThreadLocal](值为[java.lang.ThreadLocal@37a2d6da]),值类型为[io.netty.util.internal.InternalThreadLocalMap](值为[io.netty.util.internal.InternalThreadLocalMap@51a7c735),但在停止web应用程序时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏
27-Sep-2021 21:47:06.916 信息 [nioEventLoopGroup-2-1] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载[io.netty.util.internal.TypeParameterMatcher]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[io.netty.util.internal.TypeParameterMatcher]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1385)
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1373)
在网上搜了很多这些报错信息,但都没有结果,然后我又看了一下Tomcat Localhost Log的报错信息,这里很明确地给了具体的错误类型
27-Sep-2021 21:47:06.750 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常
javax.servlet.ServletException: java.lang.IllegalArgumentException: Invalid configuration type: '${wicket.configuration}'. Must be "development" or "deployment".
at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:467)
${wicket.configuration}
出现在openmeetings-web\src\test\jetty\web.xml和openmeetings-web\src\main\webapp\WEB-INF\web.xml两个文件的下列代码中
<init-param>
<param-name>configuration</param-name>
<param-value>${wicket.configuration}</param-value>
</init-param>
我的做法也是简单粗暴,直接改成了下面:
<init-param>
<param-name>configuration</param-name>
<param-value>development</param-value>
</init-param>
这样程序就可以正常启动了
踩坑四:数据库配置错误
我用的是MySQL数据库,版本是8.0.19。一开始用8.0.16的jar包进行jdbc连接,它会提示无法连接。后来更换了5.1.47的jar包,就可以通过数据库检查了。不同电脑可以正常连接的jar包版本可能会不一样,实在不行就多尝试几个。。。
附上几个链接:
Openmeetings官方MySQL配置教程
MySQL Connector jar包下载地址
写在最后
整个openmeetings是安装完成了,可以正常注册和登录,但是现在登录以后页面会卡住进不去,还不知道是什么原因。本人也是第一次配置openmeetings,遇到了很多问题感觉自己也解决得不是很到位,如果大家有更好的意见欢迎留言讨论,大家一起学习进步~!
小组分工:接下来我将负责分析openmeetings下的openmeetings-install和openmeetings-server两个文件夹的代码