1.概述
后台系统使用超图iobjectJava操作地图,数据库使用的是Oracle,在安装使用期间遇到了不少的坑,在此记录,以免后忘。
2.安装Oracle客户端
先安装oracle客户端,再安装iobjectJava。原因是iobjectjava需依赖oracle客户端的一些组件。
2.1.下载Oracle客户端
我们系统安装的版本是10.2的ZIP压缩包,使用ZIP包的好处是免安装。下载地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
2.2.解压到/opt/oracle
解压后生成目录/opt/oracle/instantclient_10_2
unzip instantclient_10_2.zip
2.3.在上述目录新建目录在上述目录下新建 network/admin
生成目录/usr/local/oracle/instantclient_10_2/network/admin
mkdir -p ./network/admin
2.4.在上述目录新建tnsnames.ora文件,并编辑数据库链接信息
history_162 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.2.222)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID =xxx)
)
)
2.5.配置环境变量
最好在/etc/profile中配置环境变量,此时的环境变量是全局生效的。其他有些文章是在.bash_profile中配置的,只会在当前session中生效,如重新打开session窗口,则配置变量丢失。
vi /etc/profile
配置内容如下:
export ORACLE_HOME=/opt/oracle/instantclient_10_2
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH
配置后记得执行source命令,使配置生效:
source /etc/profile
2.6.验证客户端是否安装成功
sqlplus username/passwd@history_162 #history_162为2.4步句柄
成功则进入oracle控制台。
3.iobjectJava安装
3.1.文件下载
下载地址如下。我们安装的是iobjectjava9.0.0(Bin包)版本(该版本比较旧了,官方建议是安装10.2及以上的版本),Bin包版比较小,但是不方便以后更新许可证,且Bin版无默认试用期,建议安装完整版(我们安装Bin版是因为我们环境装有iserver完整版,iobjectjava可以使用iserver的许可证)。
http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx
3.2.解压安装到/home/iobjectjava路径下
解压后得到一个Bin文件夹。
tar -zxvf supermap-iobjectsjava-9.0.0-15320-63946-linux64-tar.gz-chs-Bin.tar.gz
3.3.拷贝oracle客户端文件至iobjectjava
进入到/opt/oracle/instantclient_10_2目录下,将下述文件下载到本地环境,需要下载的文件如下。将下载下来的文件上传到/home/iobjectjava/Bin文件夹中。
3.4.删除sdx文件
删除以下sdx文件,这些文件是其他数据库的依赖,我们系统使用oracle,对于其他库的依赖要予以删除,否则iobjectjava会启动报错。
rm -rf libSuEngineSRDB.sdx
rm -rf libSuEngineDMCI.sdx
rm -rf libSuEnginePG.sdx
rm -rf libSuEngineOsp.sdx
rm -rf libSuEngineAltibase.sdx
rm -rf libSuEngineDB2.sdx
rm -rf libSuEngineKDB.sdx
rm -rf libSuEngineKadb.sdx
3.5.配置环境变量
在/etc/profile中配置环境变量,配置内容如下,配置完成后记得执行source命令使配置文件生效。
export PATH=/home/iobjectjava/Bin:$PATH
export LD_LIBRARY_PATH=/home/iobjectjava/Bin:$LD_LIBRARY_PATH
3.6.验证是否安装成功
写如下一段java代码,放入linux环境中看是否能执行成功即可
public static void main(String[] args) {
System.out.println("===========begin===========");
Workspace ws = new Workspace();
System.out.println("===========end=============");
ws.close();
}
4.配置许可证
iobjectjava刚安装好时,是有三个月许可证使用期限的。如果许可证过期,则需去官网申请新的许可证。
4.1.查看许可证何时过期
对安装了iobjectjava完整版或iserver完整版的,进入安装根目录,运行以下命令:
./licensetool.sh -status
查询结果:
4.2.linux环境更新许可证
首次更新需创建一个许可证目录。
4.2.1生成report文件
在iobjectjava完整版或iserver完整版的根目录,运行以下命令:
./licensetool.sh -report report文件存在目录
4.2.2.根据生成的report文件去官网申请许可证
申请步骤根据官网提示来就行了
https://www.supermapol.com/subscription/time-license/object
申请后得到的许可证:
4.2.2首次替换,创建许可证目录
创建目录:/opt/SuperMap/License,注意大小写。将许可证文件放入到目录下即可。
5.记一些问题
5.1.报错:libawt_xawt.so:cannot open shared object file
见另一篇文章:https://blog.csdn.net/dip12315/article/details/125365717
5.2.执行3.6验证代码时,workspace工作空间无法打开,也不报错。
具体原因不明,但是已清楚是什么操作导致的:
- 我使用的是root账号安装的,root账号安装后,执行3.6节代码,显示已安装成功。
- 之后我又使用了weblogic账号来执行3.6的代码(测试环境应用是用weblogic账号发版的),然后就出现了以上问题。
- 用weblogic账号运行出现该问题后,我又切回到root账号运行3.6代码,依然出现了上述问题。
- 觉得可能是用weblogic账号运行后,新生成了什么带权限的文件,然后把iobjectjava下的文件权限全部调整为了可读可写可执行,依然没有解决问题。
解决:重装 😦,重装后注意只能使用一个账号来启动,不能多个账号切换来启动。
5.3.报错:unknown error code: 31
完整报错如下
原因:许可证过期了,快去更新吧。如果是生产应用,更新许可证无需重启应用。
5.4 no subase in java.library.path
原因:未配置iobjectjava的环境变量或环境变量未生效