当我在MacOS上使用我的Java代码中的PlantUML SourceStringReader时,Dock图标在我的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在底座上显示图标-我可以不显示图标吗?
发布于 2021-08-24 09:59:05
问题似乎是FileFormatOption加载了java.awt.geom.AffineTransform类,该类初始化了AWT,弹出了停靠图标。
在第一次调用PlantUML之前运行System.setProperty("java.awt.headless", "true")可以解决这个问题。
直接运行PlantUML时,有一个-headless选项:java -jar plantuml.jar -headless -verbose some-file
https://stackoverflow.com/questions/68891307
复制相似问题