PlantUML中Package内Folder与Class共存异常问题求助
PlantUML中Folder与Class写法问题及代码修复
问题描述
核心疑问:PlantUML中在folder之后使用class或反之的写法是否存在问题?同时以下两段代码无法正常运行,需排查原因:
简化测试代码
@startuml package TestPackage { folder "Test Folder" { [Item A] [Item B] } class TestClass } @enduml
实际使用的简化代码
@startuml !theme vibrant title Obsidian Productivity System Overview actor User package "Obsidian Vault" { package "Core Structure" { folder "Folders (PARA-light)" { [Ideas Folder] [Notes Folder (General)] [Projects Folder] [Side Projects Folder] [Learn Folder] [Blog Folder] [Assets Folder] [Etc Folder] <<e.g. Monthly Assess.>> } class "This is my class" as class1 class class2 as "It works this way too" } } @enduml
问题原因及修复方案
核心问题解析
folder与class的声明顺序本身不存在语法冲突——在同一父容器(如package)中,先写folder再写class,或反过来,都不会导致代码报错。
你的代码无法运行的真实原因是:folder容器内使用了错误的元素类型。[Item X]是PlantUML中component(组件)的简写,但folder容器默认仅支持放置class、interface、folder等特定类型元素,直接放入component会触发语法解析失败。
修复方案
方案1:替换folder内的元素类型
将[Item X]改为class "Item X",如果需要保留“文件夹子项”的语义,也可以使用file "Item X"(需确保PlantUML版本支持file元素)。
修复后的实际代码示例
@startuml !theme vibrant title Obsidian Productivity System Overview actor User package "Obsidian Vault" { package "Core Structure" { folder "Folders (PARA-light)" { class "Ideas Folder" class "Notes Folder (General)" class "Projects Folder" class "Side Projects Folder" class "Learn Folder" class "Blog Folder" class "Assets Folder" class "Etc Folder" <<e.g. Monthly Assess.>> } class "This is my class" as class1 class class2 as "It works this way too" } } @enduml
方案2:调整容器结构(若需保留component)
如果必须使用component,可以将其放入package而非folder中,或者显式声明component类型并确保容器兼容。
内容的提问来源于stack exchange,提问作者EaZy Studio
相关产品推荐
相关产品推荐

