FRM-18108 FRM-10102错误解决

当修改了服务器上resource文件路径导致FRM-18108和FRM-10102错误时,可以通过以下步骤解决:1. 将resource目录下载到本地;2. 修改注册表中FORMS_PATH数据值指向新的路径。若问题仍未解决,检查subclass模版是否放置在FORM_PATH指定目录下。

错误提示:


产生原因:修改了服务器上下载的resource文件路径


解决办法:

1.从$AU_TOP中下载下来resource目录及其文件到本地  如:D:\DevSuiteHome_1\resource

2.修改注册表:

注册表路径:

一般为:Regedit > HKEY_LOCAL_MACHINE> SOFTWARE > ORACLE>KEY_DevSuiteHome1>FORMS_PATH

本机为:Regedit > HKEY_LOCAL_MACHINE> SOFTWARE >Wow6432Node> ORACLE>KEY_DevSuiteHome1>FORMS_PATH


<think>我们正在处理的是FRM-90928错误,具体描述为"命令行中关键字后的位置参数问题"。这个错误通常发生在启动Oracle Forms应用时,命令行参数传递不正确。 根据错误信息:“positional parameter after keyword on command line”,这意味着在命令行中,关键字参数(如userid、module等)后面出现了位置参数(即没有关键字前缀的参数)。在Oracle Forms的命令行语法中,所有参数都必须以关键字形式指定,不能出现无关键字的参数。 例如,以下命令是错误的: frmweb.exe module=myform.fmx userid=scott/tiger@db my_parameter <-- 错误!my_parameter是位置参数,不能出现在关键字参数后面 正确的命令应该是: frmweb.exe module=myform.fmx userid=scott/tiger@db paramform=no other_parameter_key=value 因此,解决错误的方法是检查启动Forms应用的命令行,确保所有参数都有关键字前缀。 具体步骤: 1. **检查启动命令**: 查看用于启动Forms应用程序的命令行(例如,在Web环境中,可能是通过URL传递参数,或者是在服务器端的配置文件中设置的命令)。确保每个参数都有明确的关键字(如`module`、`userid`、`paramform`等),并且没有多余的位置参数。 2. **检查URL参数**: 如果通过浏览器URL启动Forms,检查URL中的参数。例如: ``` http://host:port/forms/frmservlet?config=test&userid=scott/tiger@db&module=myform.fmx ``` 这里每个参数都有关键字(config, userid, module)。如果URL中出现了没有关键字的参数值,就会导致该错误。 3. **检查formsweb.cfg文件**: 在Forms服务的配置文件`formsweb.cfg`中,检查对应配置节(如[test])中的参数设置。确保每个参数都正确指定了关键字。特别注意`otherParams`参数,它用于传递额外的参数,这些参数必须是以逗号分隔的“关键字=值”对。 例如,在formsweb.cfg中: ``` [test] form=myform.fmx userid=scott/tiger@db otherParams=param1=value1,param2=value2 # 正确:每个额外参数都有关键字 # 错误示例:otherParams=value1,value2 (这样会导致位置参数错误) ``` 4. **检查自定义脚本或调用程序**: 如果通过脚本(如shell脚本或批处理文件)或自定义程序调用Forms运行时,检查这些脚本中构建的命令行,确保没有遗漏关键字。 5. **调试技巧**: 可以尝试简化命令行,只保留必要参数(如module和userid),然后逐步添加其他参数,以定位是哪个参数导致了问题。 示例错误场景: - 错误:`frmweb.exe module=myform.fmx userid=scott/tiger@db some_value` 这里`some_value`是一个位置参数,因为它没有关键字。 - 正确:`frmweb.exe module=myform.fmx userid=scott/tiger@db param1=some_value` 总结:FRM-90928错误的根本原因是命令行参数语法错误,即关键字参数后面出现了位置参数。请按照上述步骤检查并修正命令行参数,确保每个参数都有关键字前缀。 如果问题仍然存在,请提供具体的命令行或URL示例,以便进一步分析。 相关问题: 1. 如何正确设置Oracle Forms的启动参数? 2. 在formsweb.cfg文件中,otherParams参数的正确用法是什么? 3. 如何调试Oracle Forms的启动错误? 4. 常见的Oracle Forms命令行参数有哪些? 5. 为什么在URL中传递参数会导致FRM-90928错误?</think>### 解决 FRM-90928 错误:命令行中关键字后的位置参数问题 FRM-90928 错误的核心是 **命令行参数语法错误**,当在 Oracle Forms 启动命令中,关键字参数(如 `module=`)后面直接跟了位置参数(无关键字的参数)时触发。以下是完整解决方案: #### 错误原因分析 1. **参数顺序错误** 关键字参数后出现位置参数,例如: `frmweb.exe userid=scott/tiger module=app.fmx REPORT_PARAM` `REPORT_PARAM` 作为位置参数出现在关键字参数 `module=` 后,违反语法规则。 2. **参数语法混合** 同时使用两种参数格式: ```bash frmweb config=test userid=scott/tiger@db # 关键字参数 my_report_param # 位置参数(错误) ``` 3. **URL 参数传递错误** 在 Web 启动 URL 中错误拼接参数: `http://server:9000/forms/frmservlet?config=test&module=app.fmx&REPORT_DATA` --- #### 解决方法 ##### 1. 统一参数格式(二选一) **方案 A:全关键字参数** 所有参数必须带关键字前缀: ```bash frmweb.exe userid=scott/tiger@db \ module=app.fmx \ param1=value1 \ # ✅ 正确 param2=value2 # ✅ 正确 ``` **方案 B:全位置参数** 严格按顺序传递参数(需确认参数顺序): ```bash frmweb.exe app.fmx scott/tiger@db value1 value2 # ✅ 正确 ``` ##### 2. 检查配置文件 在 `formsweb.cfg` 中,确保 `otherParams` 使用关键字格式: ```ini [MY_APP] form=app.fmx userid=scott/tiger@db otherParams=param1=REPORT_DATA,param2=FORMAT # ✅ 逗号分隔的关键字参数 ``` ##### 3. 修正 URL 参数 在 Web 启动 URL 中,所有参数必须带关键字: ```http http://server:9000/forms/frmservlet?config=MY_APP&param1=REPORT_DATA&param2=PDF ``` ##### 4. 验证参数顺序 通过 `frmweb help=y` 查看合法参数顺序: ```bash $ frmweb help=y Valid parameters: module=form_name userid=username/password@db param=value # 额外参数必须带关键字 ... Positional parameters must precede keyword parameters. ``` --- #### 调试技巧 1. **启用日志** 添加 `debug=yes` 参数捕获详细错误: ```bash frmweb.exe module=app.fmx debug=yes log=forms.log ``` 2. **参数顺序验证工具** 使用临时脚本检查参数顺序: ```bash #!/bin/bash # 检查关键字参数后是否有位置参数 has_keyword=false for arg in "$@"; do if [[ $arg == *=* ]]; then has_keyword=true elif $has_keyword; then echo "错误:位置参数 '$arg' 出现在关键字参数后" exit 1 fi done ``` --- #### 关键原则总结 1. **位置参数必须全部在关键字参数之前** $$ \text{位置参数} \rightarrow \text{关键字参数} $$ 2. **混合使用时,位置参数必须在第一个关键字参数出现前结束** 3. Web URL 和配置文件必须 **始终使用关键字参数格式** > **示例修正** > 错误命令: > `frmweb module=order.fmx userid=ops$oracle REPORT=DailySales` > 修正后: > `frmweb userid=ops$oracle module=order.fmx report=DailySales` > 或(纯位置参数): > `frmweb order.fmx ops$oracle DailySales` [^1] [^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值