You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebLogic 10.3.3下WLST脚本执行报错求助(代码无问题)

解决WebLogic 10.3.3中WLST脚本的ValueError问题

问题根源

你的报错ValueError: invalid literal for int() with base 10: 'Temporary'出现在if int(webVer) > 11:这一行,核心原因是WebLogic 10.3.3和12.2.1.1.0的version字符串格式不一致,导致你提取主版本号的逻辑失效。

在12.2.1.1.0中,version的输出大概是这样的:

WebLogic Server 12.2.1.1.0 Wed Jan 13 21:40:54 PST 2016 1755248

此时webVer.split(' ')[2]能拿到12.2.1.1.0,再拆分后得到主版本号12,转int完全没问题。

但在部分10.3.3环境中,version会包含Temporary标识,输出类似:

WebLogic Server Temporary Build 10.3.3.0 Tue Jul 20 08:05:23 PDT 2010 1323601

这时webVer.split(' ')[2]取到的是Temporary,而非版本号,后续转int自然抛出错误。

修复方案

修改版本号提取逻辑,不要依赖固定位置的字符串拆分,改用正则表达式精准匹配版本号的数字部分,这样能兼容不同格式的version输出。

把原来的版本提取代码:

webVer = version
webVer = webVer.split(' ')[2].split('.')[0]

替换为以下代码:

import re
webVer = version
# 从版本字符串中匹配第一个数字开头的主版本号(比如10、12)
version_match = re.search(r'\b(\d+)\.', webVer)
if version_match:
    webVer = version_match.group(1)
else:
    # fallback逻辑:如果正则匹配失败,尝试原方式或默认设为10(适配10.3.3)
    try:
        webVer = webVer.split(' ')[2].split('.')[0]
    except IndexError:
        webVer = '10'

这个修改会优先从版本字符串中提取数字开头的主版本号,不管中间有没有Temporary这类额外标识,都能正确拿到10或12,避免转int报错。

额外验证与提示

你可以先在10.3.3的WLST控制台中执行print version,确认输出是否包含Temporary字样,这能帮你确认问题的触发场景。

另外,还要注意10.3.3和12c的WLST API差异:比如cmo.getOverallHealthState()的返回格式在10.3.3中是否和12c一致?如果后续还有其他报错,可能需要针对旧版本做适配,但当前的核心问题是版本号提取的逻辑错误,修复后应该能解决当前的ValueError。

内容的提问来源于stack exchange,提问作者Emrahall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:57:33