ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Edge浏览器打不开Oracle EBS Form?详解Java环境、证书导入与IE模式配置

Edge浏览器打不开Oracle EBS Form?详解Java环境、证书导入与IE模式配置 你有没有遇到过这种情况领导发来一个Oracle EBS的链接你点开浏览器页面一直转圈或者Java那个小图标闪一下就不见了Form界面怎么都出不来。这几天我已经被不止一个同事追着问为什么Microsoft Edge浏览器打不开EBS Form这里的EBS指的是Oracle EBS也就是Oracle E-Business Suite很多企业上ERP都在用它而Form是它最常用的一套操作界面采购、财务、库存这些业务基本上都在上面点。今天这篇文章就把这件事一次说透从Java环境、证书配置到Edge里的IE模式每一步怎么配、为什么这么配我全部给你拆开讲照着操作基本都能解决。1. 为什么Edge打不开EBS Form先说清楚病根1.1 你遇到的“打不开”具体是哪种情况动手之前先别急着重装Java或者卸载Edge我们要先判断你遇到的到底是哪一种“打不开”。很多问题看着像其实病根完全不一样。常见情况有这么几类点击EBS菜单里的Form图标后浏览器没反应或者新窗口打开后直接显示“无法访问此页面”。浏览器出现一个提示让你下载或启用Java插件但点了之后没有任何变化。Java控制面板或者JNLP文件被系统拦截弹出“Windows已保护你的电脑”之类的警告。Edge地址栏旁边出现“IE模式”的蓝色图标但点击后页面反而白屏。最典型的一种EBS登录页面能正常打开但所有Form入口点下去都是空白标签页右下角一直在打转。如果你遇到的只是前面几种那基本都能归到“浏览器不支持老技术”或者“Java环境没配对”这两类原因上。我在实际排查里见过太多同事一上来就找EBS管理员重置密码结果根本不是账号问题纯粹是本地Java和浏览器配置的问题。1.2 病根在Oracle EBS Form的技术底座要说清楚为什么Edge打不开EBS Form必须先搞清楚EBS Form到底是个什么东西。Oracle EBS的Form界面不是普通网页。它背后是Oracle Forms技术这套技术在ERP领域用了二十多年到今天还是EBS里最重要的客户端交互方式。Form界面的运行逻辑很特殊浏览器只是负责“发起”真正干活的是一套独立的Java客户端程序。在EBS老版本比如R12.1里Form以Java Applet的形式嵌在网页中运行浏览器必须内置Java插件。在较新的R12.2版本里Oracle慢慢转向用Java Web Start来启动浏览器下载一个JNLP文件然后交给本机Java运行时去拉起独立的Form窗口。无论哪种方式都绕不开一个硬性条件本机必须安装合适版本的Java运行时。而新版Microsoft Edge是Chromium内核Chromium早就彻底移除了对Java浏览器插件的支持。这不是Edge故意跟EBS过不去是整个浏览器行业在淘汰老技术。从NPAPI插件被主流浏览器封杀那天起EBS Form想直接靠浏览器自带能力打开就已经不可能了。1.3 为什么偏偏是Edge打不开有的朋友会问那我用其他浏览器怎么就能打开这个问题问得好正好点破关键。很多企业里能正常打开EBS Form的浏览器要么是三四年前的旧版浏览器要么是还保留着老内核兼容模式的浏览器。有些同事电脑上装了360安全浏览器、搜狗浏览器之类的第三方浏览器它们默认开了兼容模式内嵌的Trident老内核可以跑Java插件所以看着“没问题”。而Edge Chromium默认不走老内核它把Java插件这条路完全堵死了。但Edge并非无解。微软知道企业系统里还有一堆老应用所以在Edge里专门保留了Internet Explorer模式也就是我们常说的IE模式。这个模式下Edge会用系统自带的Trident引擎来渲染页面老技术就能重新被兼容。换句话说Edge完全可以打开EBS Form只是需要你先把它切换到IE模式再把Java环境配好。这就是整篇文章的核心思路。2. 配置前的三件大事Java版本、例外站点、证书链2.1 Java运行时版本选对后面省一堆事EBS Form对Java版本的挑剔程度远超一般人的想象。我见过太多案例问题就出在“Java装得太新”上。先说结论绝大多数EBS环境装JRE 8的32位版本是最稳妥的选择。为什么是32位因为EBS Form在Windows平台上很多历史问题只有32位Java环境下才不踩雷。有的同学会担心我系统是64位的装32位Java能行吗可以Windows完全支持32位Java和64位系统共存。你甚至可以在64位系统上同时装32位和64位两套JRE但EBS这里建议你优先确认系统默认用32位的那套。另外要特别注意Java的大版本别乱升。JRE 11、JRE 17这类高版本EBS官方支持滞后很严重很多Form启动后会出现黑屏、按钮失效、中文乱码这些怪毛病。如果你单位有明文规定用哪个版本就严格按规定的来如果没有JRE 8u202之前的版本在兼容性和安全性之间比较平衡。因为JRE 8从8u201/8u211开始授权机制有变化虽然功能影响不大但企业环境和EBS官方支持矩阵里通常更偏好老版本。查看当前Java版本的命令很简单java -version如果执行后提示“不是内部或外部命令”说明Java环境变量没配好或者压根没装。你也可以在Windows的“控制面板”里看有没有“Java”图标有的话双击打开切到“Java”标签页点“查看”能看到当前生效的版本。这里提醒一句装了多个Java版本时系统会用环境变量里排在最前面的那个容易造成“我明明装了但EBS调用的不是它”的诡异问题。2.2 例外站点列表Java不再拦截你的EBS地址Java装对了版本下一个拦路虎就是Java的安全设置。从Java 8更新20开始Oracle大幅收紧了Applet和Java Web Start的安全策略。默认情况下凡是不在例外站点列表里的地址Java要么直接拦截要么弹出一堆吓人的安全警告。打开Java控制面板的方法是Windows“开始”菜单里搜索“配置Java”或者在“控制面板”里找到Java图标。进去后切到“安全”标签页点了“编辑站点列表”就能添加例外地址。这里有几个关键细节我单独拎出来讲例外站点填的是EBS服务器的完整域名或IP格式要带协议头比如https://erp.example.com。如果EBS端口不是默认443还要带上端口比如https://erp.example.com:4443。不要填https://erp.example.com/*这种带通配符的写法Java例外站点对它支持不太友好容易出现“你以为加了实际上没生效”的情况。填完必须点“保存”然后Java会再弹一次确认框让你再次确认。很多人就漏了这一步关掉控制面板以为完事结果还是被拦截。添加完成后建议重启一次浏览器或者重启一下整个Java进程让配置彻底加载。有朋友会问我把Java安全级别滑块拖到最低行不行在Java 8u131之后那个滑块已经不能调到“低”了默认最低就是“中”。而且把安全级别调低是拿整个系统的安全换一时的方便在企业的办公环境里非常不推荐。老老实实加例外站点才是正规做法。2.3 证书导入不被信任的证书让Form直接罢工第三件事也是容易被忽略的一件事证书。很多企业的EBS服务器走HTTPS用的是内部CA签发的证书或者干脆就是自签名证书。浏览器层面还好说导入到系统受信任根证书后就认了。但Java运行时有自己独立的一套证书库系统信任不代表Java信任。如果Java不信任这个证书Form启动时会直接报证书错误或者Java Web Start弹个警告框说你连接不安全然后拒绝运行。解决方式是把EBS服务器的根证书导入到Java的证书库里。操作大概是这样先从EBS服务器导出根证书用Edge打开EBS地址点地址栏左侧的锁图标查看证书再切到“证书路径”标签找到最顶层的那个根证书导出成CER文件。然后在管理员命令行里执行keytool -import -alias ebs_root -file ebs_root.cer -keystore cacerts -storepass changeit注意keytool是JDK或JRE自带命令通常在C:\Program Files\Java\jre1.8.0_xxx\bin下面。如果你没把Java bin目录加进PATH就要用完整路径执行。cacerts文件就是Java的信任库位置在JRE安装目录下的lib\security\cacerts。默认密码是changeit如果你单位统一改过就换成你们的密码。导入成功后最好也用同样的方式把证书导入到Windows系统信任库方法是双击CER文件选择“安装证书”存储位置选“本地计算机”受信任的根证书颁发机构。这样浏览器和Java两边都认它能少踩很多坑。3. Edge浏览器里最关键的一步开启IE模式3.1 IE模式是什么为什么EBS Form离不开它前面说了EBS Form依赖Java而Edge Chromium内核不支持Java插件。微软给的官方答案就是IE模式。IE模式并不是把Edge变成老的IE浏览器而是Edge借用Windows系统自带的Trident引擎去处理那些老网站。你可以把Edge想象成一栋新楼里面除了常用的“Chromium房间”还专门保留了一间“IE套房”。默认你进的是Chromium房间但遇到EBS这种老住户你就得带它去IE套房。IE模式下Edge会尝试模拟IE浏览器的环境包括对ActiveX、Java插件、企业级文档模式的支持。EBS Form的Applet或Java Web Start启动逻辑在这个模式下才有机会正常工作。整个过程不需要安装任何额外的Edge插件也没有乱七八糟的兼容性工具纯粹靠Edge自带功能。3.2 手动开启IE模式的三步操作如果公司没有强制下发表单策略个人电脑上手动开启IE模式很简单。具体步骤第一步在Edge地址栏输入edge://settings/defaultbrowser然后找到“允许在Internet Explorer模式下重新加载网站”这个选项把它改成“允许”。注意这个选项的翻译可能随版本略有差异但位置基本都在“默认浏览器”这个设置页里。第二步设置好之后按提示重启Edge浏览器。有些版本会让你点击“立即重启”不要跳过不重启不生效。第三步重启后打开EBS登录页面点浏览器右上角的三个点菜单在弹出的菜单里找到“在Internet Explorer模式下重新加载”。点击后页面会自动刷新一次地址栏左边会出现一个蓝色的IE图标这就说明当前页面已经处于IE模式了。有人问那我以后每次打开EBS都要手动点一次吗分情况。如果只是偶尔用一次手动点一下就行。但如果你天天要开EBS建议用下一小节说的站点列表方式让Edge自动判断、自动切换。3.3 企业环境更省心的玩法站点列表自动切换在稍微正规一点的企业环境里让业务用户每次手动切IE模式既容易忘又影响体验。这时候可以用Edge的企业策略来配置“IE模式站点列表”。这个功能要求Edge走微软的企业版策略通道。简单来说你准备一个XML文件里面写明哪些域名要用IE模式打开。然后把XML文件放到企业内部某个HTTPS地址上再通过组策略把该地址配置给所有装有Edge的电脑。这样员工访问EBS时Edge自动就切到IE模式完全无感。一个最简的XML站点列表大概长这样site-list version1 site urlhttps://erp.example.com compat-modeIE11/compat-mode open-inIE11/open-in /site /site-listXML里的open-in就是指定该站点用IE模式打开。真正上线前建议先在测试机上验证因为不同EBS版本对文档模式和兼容模式的细节需求不一样。配置完成后Edge会在后台定时刷新站点列表不需要用户手动干预。如果公司里没有IT管理员来帮你搞这套你个人电脑上就别折腾组策略了手动开启之后“在IE模式下重新加载”是完全可用的方案。4. 从零到一完整打开EBS Form的实操流程4.1 动手前先过一遍检查清单我建议你把下面这些当成“排雷清单”每一项都确认过再往下走能省掉后面很多奇怪的报错。Java版本是不是JRE 8 32位系统里有没有同时装多个版本。Java控制面板“安全”标签页里EBS地址是否已经加入例外站点列表并保存。EBS服务器证书是否已经导入Java的cacerts和Windows系统信任库。Edge是否已经在“默认浏览器”设置里允许IE模式。是否有一个确定的EBS访问地址比如https://erp.example.com并且你知道自己的登录账号。这几项看着简单但每一条我都见过翻车现场。尤其是第二条和第三条你以为弄了实际没弄对最后卡在一个莫名其妙的报错上。4.2 第一步检查当前Java版本按WinR输入cmd回车打开命令行输入java -version如果输出类似java version 1.8.0_202 Java(TM) SE Runtime Environment (build 1.8.0_202-b08)那Java版本没问题。如果你看到的是11.0.xx或者更高稳妥起见卸掉后装JRE 8 32位。如果提示找不到java先到C:\Program Files (x86)\Java下面看看有没有jre1.8.0_xxx目录。有的话把它的路径加进系统环境变量的Path里面没有的话去官网下载JRE 8对应安装包装好再重新开一个命令行窗口验证。这里有个小技巧装完之后一定要开新命令行窗口旧窗口里的环境变量不会刷新。4.3 第二步把证书导入Java和系统用Edge打开EBS地址点击地址栏左侧的锁形图标选择“证书”。在弹出的窗口里切到“证书路径”标签双击最上面的根证书节点再点“详细信息”标签选择“复制到文件”按向导导出为Base-64编码X.509(.CER)格式文件名随便起比如ebs_root.cer。然后在管理员命令行里执行导入命令。假设你的JRE装在C:\Program Files (x86)\Java\jre1.8.0_202C:\Program Files (x86)\Java\jre1.8.0_202\bin\keytool.exe -import -alias ebs_root -file C:\temp\ebs_root.cer -keystore C:\Program Files (x86)\Java\jre1.8.0_202\lib\security\cacerts -storepass changeit如果之前导入过会提示别名已存在可以先删除旧的C:\Program Files (x86)\Java\jre1.8.0_202\bin\keytool.exe -delete -alias ebs_root -keystore C:\Program Files (x86)\Java\jre1.8.0_202\lib\security\cacerts -storepass changeit然后再执行导入。再双击ebs_root.cer文件按向导安装到“本地计算机”的“受信任的根证书颁发机构”下。做完这步浏览器和Java两边对这个证书就都放下了戒心。4.4 第三步在Java控制面板添加例外站点打开Java控制面板切到“安全”标签页点“编辑站点列表”在弹出的窗口里点“添加”输入EBS的完整地址比如https://erp.example.com然后依次点击“确定”“保存”。保存时Java会弹出一个确认警告问你是否确定要添加该站点到例外列表这时一定要再点一次“确定”。之后可以在列表里看到一条记录以https开头说明添加成功。如果你这只关系比较多服务器地址比如有测试环境和生产环境就把它们都加进去每个地址独立一行。4.5 第四步开启Edge的IE模式在Edge地址栏输入edge://settings/defaultbrowser找到“允许在Internet Explorer模式下重新加载网站”改为“允许”。然后点“立即重启”等Edge重新打开后先访问EBS页面看看地址栏有没有IE图标。如果没有就点右上角三个点菜单选择“更多工具”再选“在Internet Explorer模式下重新加载”。如果这串菜单路径跟你Edge版本对应的中文翻译不完全一致也别慌核心选项名称里一定带“Internet Explorer模式”几个字。4.6 第五步登录EBS并把Form真正拉起来回到EBS登录页面正常输入用户名和密码。登录后点击任一职责进入菜单找到带Form图标的入口比如“采购订单”“供应商管理”之类。点击后浏览器会尝试启动Java Web Start或Applet。第一次启动时可能会弹Java的安全警告内容大概是是否要运行此应用程序。勾上“我接受风险并希望运行此应用程序”再点“运行”。之后可能出现Windows防火墙提示也允许访问。稍等几秒独立的Form窗口就会弹出来。如果这一路走下来Form窗口正常出现那恭喜你环境已经通了。接下来只需要保持Java和Edge的配置不变后续使用都会很顺。5. 常见问题排查与避坑实录5.1 点击Form图标没反应点上没反应是这类问题里最高发的。我先建议你按这个顺序排查先看Edge地址栏有没有IE图标。没有的话按第四章第四步切到IE模式再点。IE模式都没开点一百遍也没用Java请求根本发不出去。再看Java例外站点。没有加例外Java会静默拦截。尤其在Java 8的高版本里拦截时连个明显的报错框都不给你只看到页面僵住特别容易误判。最后看Java环境变量。命令行里执行java -version确认当前生效的Java到底是哪一个。有次我帮人排查系统里装了两套Java环境变量指向了64位的JRE 11EBS就是要32位JRE 8结果死活不起来。5.2 Java图标一闪而过还一直转圈这种更让人抓狂Java图标出现了说明Web Start已经接棒但后续没走完。最常见的原因就是证书没导入Java库。Java Web Start启动时发现服务器证书不在信任列表里会尝试弹安全警告但在某些受控环境里警告一闪而过或者被系统策略吞掉了。处理方式就是回到第四章第三步把证书导入cacerts再用IE模式重新登录一次。导入证书后建议重启浏览器和Java进程不然Java可能还有缓存的旧状态。还有个可能性是JNLP文件没被正确处理。Java Web Start通过临时文件来下载和运行应用防火墙、杀毒软件有时会拦截扩展名为JNLP的下载。如果其他都没问题你可以在EBS的Form入口链接上右键复制链接手动下载JNLP文件到本地然后在命令行里执行javaws C:\temp\xxx.jnlp这样可以直接绕过浏览器的下载拦截看到Java平台的真实报错信息。5.3 报证书错误或者安全警告如果你看到了明确写着“无法验证服务器证书”或“证书不受信任”的提示那问题基本就在证书链上。企业内部EBS经常用自建CAJava和系统的信任库都不认识这个CA所以才会报错。解决方式前面已经讲过导入根证书即可。这里补充一个细节有时候你导入的是服务器证书叶子证书而不是根证书那样可能还是报错。一定要沿着证书路径找到最顶层的根证书把它导入。在Edge查看证书时切到“证书路径”标签最上面没有缩进的那个节点才是我们需要的根证书。5.4 IE模式下页面布局错乱有些EBS版本在IE模式下会出现页面样式错乱按钮错位、字体忽大忽小。这通常是因为EBS的HTML页面在IE模式下默认进入了某种低版本文档模式而EBS本身可能期望的是IE11文档模式。解决办法是在前面提到的XML站点列表中把compat-mode设置成IE11。如果你是手动使用IE模式也可以在IE模式下按F12打开开发工具在页面“仿真”设置里临时把文档模式调到IE11测试。不过开发工具改的设置在刷新后会丢最稳定的方案还是企业策略里的站点列表。页面错乱还有一个不太起眼的原因Edge缓存了非IE模式下的页面。这时可以在Edge设置里清除这个站点的缓存再重新切换IE模式加载。缓存清了之后有不少页面错乱问题能直接消失。5.5 问题排查顺序速查表我把这些年遇到的高频问题整理成一张表可以当成排查路线图使用。现象第一步检查第二步检查第三步检查点Form没反应Edge是否处于IE模式Java例外站点是否添加Java版本是否为JRE 8 32位Java图标闪一下消失证书是否导入cacerts杀毒软件是否拦截JNLP是否多个Java版本冲突报证书错误根证书是否导入Java根证书是否导入Windows系统EBS证书链是否完整页面布局错乱站点列表兼容模式是否为IE11清理Edge站点缓存尝试重新登录EBS一直白屏转圈是否等了足够长时间Java安全警告是否被忽略检查Java Web Start日志最后那一条“检查Java Web Start日志”值得多说一句。Java安装目录下或者用户目录的AppData\LocalLow\Sun\Java\Deployment\log里通常有日志文件遇到说不清的报错时打开日志看看报错原因往往就在里面。比猜来猜去快得多。6. 一些实操体会这几件事我反复踩过坑最后再多说几句。第一别把Java版本换来换去。很多人打不开就怀疑版本不对今天装JRE 8明天换JRE 11反而把问题搞复杂。先在命令行确认好当前Java版本再对比EBS环境要求确认后再动手。大部分企业内部EBS的Java版本要求是明确的照着执行就行。第二证书这件事一定要Java和系统两边都导入。有些运维文档只写了导入Java没提系统信任库结果浏览器层报错不断两边都导一遍才彻底消停。导入完记得重启浏览器和Java进程缓存里的旧状态有时会误导排查。第三如果在单位里经常遇到不同电脑来问这个问题强烈建议推动IT部门把Edge的IE模式站点列表做成组策略统一部署。把这个配置下发之后业务部门再也不用来回切换模式IT这边的工单量能明显下降。我第一次在公司里推动这个配置时业务同事反馈挺好的至少再没人因为“白屏”打电话了。第四也是最后一条这些小问题看着琐碎但每次解决后都值得在电脑上做个小记录。同一个办公室、同一批系统很容易反复出同一个错记下来下次直接照着排查几分钟搞定比重新摸索一遍省心太多。
返回列表