diff --git a/viewpanel/src/com/spineview/ObjectPanel.java b/viewpanel/src/com/spineview/ObjectPanel.java index acb14e7..66620eb 100644 --- a/viewpanel/src/com/spineview/ObjectPanel.java +++ b/viewpanel/src/com/spineview/ObjectPanel.java @@ -1025,11 +1025,19 @@ public final class ObjectPanel { try { String classes = System.getProperty("spine.classes"); if (classes == null) return; - // classes = /viewpanel/build/classes → 上跳三级才是仓库根 - java.io.File root = new java.io.File(classes).getParentFile().getParentFile().getParentFile(); - java.io.File table = new java.io.File(root, "tools/deobf/names.tsv"); - if (!table.isFile()) { - System.err.println("[panel] 没找到映射表: " + table); + // 从 classes 往上找,直到找到含 tools/deobf/names.tsv 的仓库根(不数层数,稳) + java.io.File dir = new java.io.File(classes).getAbsoluteFile(); + java.io.File table = null; + for (int i = 0; i < 6 && dir != null; i++) { + java.io.File candidate = new java.io.File(dir, "tools/deobf/names.tsv"); + if (candidate.isFile()) { + table = candidate; + break; + } + dir = dir.getParentFile(); + } + if (table == null) { + System.err.println("[panel] 没找到映射表(从 " + classes + " 往上找了 6 层)"); return; } for (String line : java.nio.file.Files.readAllLines(table.toPath(),