java - 我可以阻止 PlantUML 在 MacOS 上运行时显示 Java Duke 图标吗
问题描述
当我SourceStringReader
在 MacOS 上使用我的 Java 代码中的 PlantUML 时,Duke 图标在我的 Dock 中弹跳。在加载其第一个 PlantUML 类之前,该过程不会发生这种情况。
代码是
import net.sourceforge.plantuml.FileFormat
import net.sourceforge.plantuml.FileFormatOption
import net.sourceforge.plantuml.SourceStringReader
import java.io.ByteArrayOutputStream
import java.io.File
fun List<String>.toSvg(): String {
val reader = SourceStringReader(this.joinToString("\n"))
return ByteArrayOutputStream().use {
val fileFormatOption = FileFormatOption(FileFormat.SVG)
reader.generateImage(it, fileFormatOption)
String(it.toByteArray(), Charsets.UTF_8)
}
}
评估FileFormatOption(FileFormat.SVG)
会导致图标出现。
我的猜测是 PlantUML 正在初始化一些导致 Mac 在 Dock 中显示图标的图形子系统 - 我可以不显示图标吗?
解决方案
问题似乎是FileFormatOption
加载java.awt.geom.AffineTransform
类,它初始化 AWT,弹出停靠图标。
System.setProperty("java.awt.headless", "true")
在第一次调用 PlantUML 之前运行可以解决问题。
直接运行PlantUML,有一个-headless
选项:java -jar plantuml.jar -headless -verbose some-file
推荐阅读
- c# - FlowListView 一个单独的标签,FlowColumnCount = "1"
- python - Python 无法将一些 CLOB xml 保存到 xml 文件中
- excel - 计算自用户输入日期以来经过了多少天
- java - 正则表达式是“(”和“)”必要的吗?
- algorithm - 算法 - 加权间隔调度问题变体
- php - PHP一次删除字符串中的某个字符串
- firebase - Nexmo:接收短信
- regex - 正则表达式:飞镖中的持续时间(小时,分钟)
- apache-kafka - kafka producer - 如何知道哪个密钥将进入哪个分区?
- amazon-web-services - bastion 如何知道要在 AWS 中连接到哪个 rds 实例