用友NC6.5下载之后安装老报错?我踩过的坑都整理好了

用友下载 ·
用友NC6.5下载之后安装老报错?我踩过的坑都整理好了

下载前先搞清楚版本号和环境要求

我第一次下载用友NC6.5的时候,光找对版本就折腾了半天。说实话,现在网上搜“用友下载”,出来的东西鱼龙混杂,很多下载站挂的版本混乱,有的标着6.5实际包是6.3,有的压缩包坏了半天下不下来。我建议你直接去用友官方合作伙伴的站点,或者企业内部提供的FTP,别去那种一看就塞满广告的下载站。我那次图省事,在某个号称“全版本”的下载站点本页下载按钮,下来一个1.5GB的ISO文件,结果解压第一步就报错说文件损坏,白白浪费一小时。

拿到安装包之后,千万别急着双击。先确认你的操作系统是不是64位的Windows Server 2008 R2或2012 R2,NC6.5在Windows 10上跑有时候兼容性会出幺蛾子,我同事就在Win10上装完启动报“类未注册”,后来换到Server 2008 R2才稳。还有,Java环境这块很多人忽略——NC6.5死认JDK1.7,别装1.8或更高版本,否则中间件启动时直接报“Unsupported major.minor version 52.0”。我当时就是图新鲜装了JDK1.8,排查了一下午才发现这个坑。

另外,数据库方面我推荐SQL Server 2008 R2或Oracle 11g,MySQL和NC6.5兼容性不好,我在测试环境试过,单据保存时老丢数据。安装前最好把防火墙、杀毒软件都暂时关掉,尤其是360和腾讯管家,它们经常把NC的注册表操作给拦截了,导致安装半途卡死。记住,关掉之后还要重启电脑,确保没有残留进程占用端口。

免费使用无需付费解锁官方正版安装包带数字签名高速下载多线程·稳定不限速

安装中间件和数据库配置的细节

选好安装目录也很关键。我第一次装的时候图方便,直接把NC6.5装在C盘,结果跑了两天就开始报“磁盘空间不足”,后来才发现日志文件疯狂增长,C盘分区的100GB空间直接干爆。建议专门给NC打个分区,比如D盘,预留至少50GB空间,安装时选“自定义安装”,把中间件、应用和数据目录全指向D盘下的独立文件夹。我现在的习惯是D:\UAP\NC65、D:\UAP\Middleware、D:\UAP\Data这样分,后期维护清晰很多。

安装过程中最烦人的是中间件配置。NC6.5自带的是Apache Tomcat 7.0.x,但实际跑起来需要调一堆参数。比如那个startup.bat启动时,如果内存给少了,加载到一半就弹出“OutOfMemoryError”。我一开始没改,直接默认,结果点本页下载按钮出来的安装包里那个catalina.bat文件里,JAVA_OPTS设置是-Xms256m -Xmx512m,这根本不够用,起码要设成-Xms1024m -Xmx2048m。或者你高级点,加个-XX:PermSize=256m -XX:MaxPermSize=512m,不然部署模块时JVM老中断。

数据库配置这块,我碰过最诡异的坑是连接字符串。安装程序会让你填数据库地址、端口、实例名,但NC6.5的Oracle连接有个潜规则:服务名不能用全局数据库名,得用SID。我第一次填了ORCLPDB这个PDB名,结果初始化时一直连不上,后来DBA告诉我数据库是普通实例,应该填ORCL。还有,SQL Server的话,如果启用了命名实例,别漏掉端口号——比如SERVER\SQLEXPRESS,1433,我之前少打了逗号,系统报“无法识别的连接属性”。

启动服务时那些莫名其妙的报错

等你装好、配好,以为能松口气了,结果点启动按钮后控制台刷出一堆红色报错。我记忆最深的是报“Failed to initialize the application: java.lang.RuntimeException: Could not load log config file”。这个问题其实很常见,是日志配置文件没加载到。解决办法是去NC安装目录下的bin文件夹,找到sysConfig.bat运行一下,里面有个“日志配置”选项卡,看看日志路径是不是对的,或者直接手动编辑nclog.properties文件,把log.dir改成实际存在的目录,比如D:\UAP\NC65\logs。

还有一种情况是启动时报“Port 8080 already in use”。如果你电脑上装了Skype或者IIS,它们经常抢端口。我那次就是Skype偷偷占了8080,关了Skype还是报错,因为它后台服务还顶着端口。最好先跑netstat -ano命令查一下PID,找到进程杀了。要是懒得折腾,可以改NC的端口,在conf\server.xml里把8080改成8081或别的,然后重新启动。

最头疼的是“License校验失败”的弹窗。很多人以为是自己下载的安装包有问题,其实多半是你没把授权文件放对地方。NC6.5的license文件通常叫license.xml或license.dat,要放在安装目录的license文件夹下。我踩的坑是,放进去之后忘记重启中间件服务,结果系统还是拿的缓存老文件。另外,检查下系统时间是否准确,如果时间不对,授权会提示过期,我同事的电脑时间跑偏了一个月,折腾了两天才发现。

部署模块包时的版本冲突问题

装好基础系统后,下一步是部署业务模块,比如财务、供应链这些。但你从企业内部拿到的模块包,可能版本号和NC6.5不兼容。我遇到过最典型的,点本页下载按钮拿到的“财务模块V6.5.0”补丁包,解压后有一个uapweb.jar,扔到webapps目录下,重启后页面打不开,日志里报“NoClassDefFoundError”。后来一查,这个jar里引用了老版本的dom4j,但NC6.5自带的dom4j是1.6.9,补丁包需要1.7.1,两个类库打架。

解决方法是去lib目录下,删掉低版本的dom4j,换上高的,但小心别动到其他模块依赖的包。我那次更聪明,直接建了一个ext-lib文件夹,把补丁包需要的jar放进去,修改tomcat的shared.loader属性,指向这个文件夹,这样不会污染主库。还有一个土办法,用maven的dependency tree分析冲突,但大部分人没那环境,最简单是直接问同事或百度下这个报错对应的缺失类。

另外,模块部署顺序也有讲究。先部署平台基础组件,比如uap-web,再部署业务模块,别反过来。我有个朋友图省事,一股脑把所有war包丢进去启动,结果界面菜单全是乱码,树形结构加载不出来。逐个部署,每部署一个就重启一次中间件,虽然慢,但能迅速定位哪个模块捣乱。

登录界面配置与常见卡顿

安装部署终于不报红了,你兴冲冲打开浏览器,输入http://localhost:8080/nc,结果界面卡在“正在加载应用系统”转圈。这种情况八成是缓存或者CSS/JS文件没加载全。先试试清浏览器缓存,或者用Chrome的隐身模式。我遇到的真实案例是,IE11的老版本不兼容NC6.5的前端框架,界面直接空白,换Edge或Chrome就好了。如果需要兼容IE,就要在NC的web.xml里设置兼容模式,加上一行meta标签。

还有一种卡顿是登录后很久才响应,这跟中间件的连接池配置有关。默认的dbcp连接池只有10个连接,并发一多就排队。我的做法是打开conf\server.xml,找到Context下的Resource标签,把maxActive改成50或100,再添加一个maxWait=5000,这样超时时间短了,不会让用户等半天。注意,别贪心改太大,超过200会把数据库压死。

登录页面的logo和标题也是很多企业要改的。在webapps\nc\WEB-INF\web.xml里找到几个welcome-file变量,把图片路径指向你的定制图文件。不过别直接覆盖原文件,最好新建一个custom目录,把修改后的内容放进去,然后改web.xml的引用路径,这样升级时不会被覆盖。

数据迁移和初始化踩坑

如果你是从旧版本升级来的,比如NC5.7到6.5,那数据迁移就是个硬骨头。别想着直接用备份文件恢复,我试过一次,系统表结构差太多,跑脚本时报了三百多个错误。正确的做法是用NC自带的升级工具,在bin目录下有个UAPUPGRADE.bat,打开后选择“从5.7迁移到6.5”,然后选数据库类型,填对连接串。注意,升级工具会检查表结构是否有差异,我那次卡在“表ACCOUNT缺少字段”,原因是旧版本自定义过字段,升级脚本没覆盖。解决办法是手动在SQL里加字段,或者先把自定义字段删了再跑升级。

还有初始化数据时,很多人忘了设置汇率和会计期间。我接手一个项目,初始化后没配会计期间,结果凭证一保存就报“期间未启用”,翻了两天文档才在“基础设置”菜单里找到“会计期间维护”的入口。这个操作很简单,但放在系统管理模块深处,新手容易漏掉。

如果你是从头初始化(比如全新安装),一定要先执行标准数据脚本。在安装包的docs目录下,有一个init_data.sql之类的文件,千万要运行,不然系统连基础科目都没有。我见过一个开发新手,跳过这步,直接导入测试数据,结果界面上的树形结构全乱了。

备份、还原和日常维护小技巧

经历这么多次折腾,我养成了个习惯:每做完一个稳定配置,立刻做一次全备份。NC6.5的备份不只是拷数据库,还要备份安装目录下的conf文件夹、license文件夹、logs文件夹(虽然日志可以不备份),还有webapps下自己改过的文件。我通常用压缩工具打个包,命名为NC65_YYYYMMDD_backup,放到另一个盘。有一次我改了一个端口配置,改坏了,直接覆盖原文件就复原,十分钟搞定。

日常维护里,最让我崩溃的是日志文件不滚动。NC6.5默认日志文件写满就会覆盖,但如果没配滚动策略,logs文件夹下可能出现几十GB的nc.log。解决办法是去conf目录下修改log4j.properties,加上一行log4j.appender.File.MaxBackupIndex=10和log4j.appender.File.MaxFileSize=10MB,这样自动按大小切分,保留最近10个。不过配置好后要重启中间件才生效。

还有定期清理临时文件。NC运行久了,work目录下缓存很多,webapps\nc\work里能清理掉,重启时自动重建。我之前一个客户说系统越来越慢,我清了一下work文件夹,重启后速度提升明显。但注意别清Catalina下的work目录,那是Tomcat自身用的。

最后一个小贴士:把中间件的启动脚本加上自动重启策略。比如Windows下写一个批处理,每隔12小时检测一次nc服务是否僵死,用tasklist和findstr判断,如果没响应就强制杀进程再启动。Linux环境下更简单,crontab里加一行@reboot sleep 30 && /opt/NC65/bin/startup.sh,这样意外重启后系统自己恢复。我的服务器就靠这段小脚本,再也没半夜被电话叫醒过。