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

使用PyDev打开文件时“Preload additional info”内部错误排查

环境信息
  • Eclipse平台:版本2024-06 (4.32),构建ID:I20240601-0610
  • Eclipse PyDev插件:12.2.0.202409031913
  • wxPython:4.2.2
  • wxFormBuilder:版本4.2.1-0-g80c4cb6
问题现象

在Eclipse中用PyDev打开文件时,弹出错误对话框:

发生问题
‘Preload additional info’遇到问题。
“Preload additional info”期间发生内部错误。
详细信息:“Preload additional info”期间发生内部错误。输入字符串无效:“11(1)”

注:偶尔会用PSPad编辑文件,其状态栏显示“1:1(1)”表示第1行第1列。

点击确定后编辑功能正常,但执行程序时,Python代码里的GUI事件与事件处理程序绑定混乱,会调用错误的处理程序。

错误日志1:“Preload additional info”内部错误

eclipse.buildId=4.32.0.I20240601-0610
java.version=17.0.6
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments:  -os win32 -ws win32 -arch x86_64

org.eclipse.core.jobs
Error
Mon Sep 23 12:55:42 EDT 2024
An internal error occurred during: "Preload additional info".

java.lang.NumberFormatException: For input string: "11 (1)"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Integer.parseInt(Integer.java:668)
    at java.base/java.lang.Integer.parseInt(Integer.java:786)
    at org.python.pydev.core.DeltaSaver$1.compare(DeltaSaver.java:232)
    at org.python.pydev.core.DeltaSaver$1.compare(DeltaSaver.java:1)
    at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:360)
    at java.base/java.util.TimSort.sort(TimSort.java:234)
    at java.base/java.util.Arrays.sort(Arrays.java:1307)
    at java.base/java.util.ArrayList.sort(ArrayList.java:1721)
    at java.base/java.util.Collections.sort(Collections.java:179)
    at org.python.pydev.core.DeltaSaver.findDeltas(DeltaSaver.java:226)
    at org.python.pydev.core.DeltaSaver.loadDeltas(DeltaSaver.java:196)
    at org.python.pydev.core.DeltaSaver.<init>(DeltaSaver.java:174)
    at com.python.pydev.analysis.additionalinfo.AbstractAdditionalInfoWithBuild.createDeltaSaver(AbstractAdditionalInfoWithBuild.java:109)
    at com.python.pydev.analysis.additionalinfo.AbstractAdditionalInfoWithBuild.init(AbstractAdditionalInfoWithBuild.java:50)
    at com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo.<init>(AdditionalProjectInterpreterInfo.java:114)
    at com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo.getAdditionalInfoForProject(AdditionalProjectInterpreterInfo.java:246)
    at com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo.getAdditionalInfoAndNature(AdditionalProjectInterpreterInfo.java:189)
    at com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo.getAdditionalInfoAndNature(AdditionalProjectInterpreterInfo.java:160)
    at com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo.getAdditionalInfo(AdditionalProjectInterpreterInfo.java:147)
    at com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo.getAdditionalInfo(AdditionalProjectInterpreterInfo.java:137)
    at com.python.pydev.analysis.builder.PreloadAdditionalInfoPyEditListener$1.run(PreloadAdditionalInfoPyEditListener.java:70)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

错误日志2:输入字符串无效:“16 (1)”

eclipse.buildId=4.32.0.I20240601-0610
java.version=17.0.6
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments:  -os win32 -ws win32 -arch x86_64

org.python.pydev.shared_core
Error
Mon Sep 23 12:55:41 EDT 2024
For input string: "16 (1)"

java.lang.NumberFormatException: For input string: "16 (1)"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Integer.parseInt(Integer.java:668)
    at java.base/java.lang.Integer.parseInt(Integer.java:786)
    at org.python.pydev.core.DeltaSaver$1.compare(DeltaSaver.java:232)
    at org.python.pydev.core.DeltaSaver$1.compare(DeltaSaver.java:1)
    at java.base/java.util.TimSort.binarySort(TimSort.java:296)
    at java.base/java.util.TimSort.sort(TimSort.java:239)
    at java.base/java.util.Arrays.sort(Arrays.java:1307)
    at java.base/java.util.ArrayList.sort(ArrayList.java:1721)
    at java.base/java.util.Collections.sort(Collections.java:179)
    at org.python.pydev.core.DeltaSaver.findDeltas(DeltaSaver.java:226)
    at org.python.pydev.core.DeltaSaver.loadDeltas(DeltaSaver.java:196)
    at org.python.pydev.core.DeltaSaver.<init>(DeltaSaver.java:174)
    at org.python.pydev.ast.codecompletion.revisited.ProjectModulesManager.setProject(ProjectModulesManager.java:75)
    at org.python.pydev.ast.codecompletion.revisited.ASTManager.setProject(ASTManager.java:54)
    at org.python.pydev.plugin.nature.PythonNature$RebuildPythonNatureModules.run(PythonNature.java:185)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
问题疑问
  1. 这是Eclipse、PyDev还是wxPython等的问题?
  2. “additional info”来自哪些文件?
  3. 如何修复该问题?
问题解答
  1. 问题归属:这是PyDev插件的问题。从错误栈可以看到,报错发生在PyDev的DeltaSaver类中,代码尝试将带括号的字符串(如"11 (1)")转为整数时触发了NumberFormatException。该字符串格式和PSPad状态栏标记一致,推测PSPad修改了PyDev存储额外信息的文件,导致解析失败。

  2. additional info的来源:PyDev的"additional info"存储在两处:一是项目根目录下的.pydevproject相关缓存文件;二是Eclipse工作区的.metadata/.plugins/org.python.pydev目录下的项目分析缓存文件,这些文件用于存储代码分析、补全的增量信息。

  3. 修复方案:

    • 清理PyDev缓存:关闭Eclipse,删除工作区.metadata/.plugins/org.python.pydev目录(或仅删除对应项目的缓存文件夹),重启Eclipse后PyDev会重新生成缓存。
    • 重置项目PyDev属性:右键项目 -> PyDev -> Remove PyDev Nature,再重新添加PyDev Nature(右键项目 -> PyDev -> Set as PyDev Project),强制PyDev重新分析项目。
    • 避免误编辑缓存文件:仅用PSPad编辑项目中的Python源代码文件,不要触碰PyDev生成的缓存文件,防止PSPad的状态栏标记写入缓存导致格式损坏。
    • 更新PyDev插件:升级到PyDev最新版本,新版本可能修复了异常格式的解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:34:58