plantuml图在Java非法ACCER错误错误中产生错误

发布于 2025-02-12 08:06:51 字数 4256 浏览 0 评论 0原文

我正在尝试使用Java制作一个简单的图表,但请继续获取错误

代码:

public class PlantUMLDemoMain {
    public static void main(String[] args) throws Exception {
        generateFromStringSource(new File("from-string.png"));
        generateFromApi(new File("from-api.png"));
    }

    private static void generateFromApi(File file) throws IOException {
        // 1. setup:
        SequenceDiagramFactory f = new SequenceDiagramFactory();
        SequenceDiagram diagram = f.createEmptyDiagram();

        // 2. Build the diagram:
        // "Bob -> Alice : hello"
        // See net.sourceforge.plantuml.sequencediagram.command.CommandArrow#executeArg
        Display bobD = Display.getWithNewlines("Bob");
        Participant bobP = diagram.getOrCreateParticipant("Bob", bobD);
        Display aliceD = Display.getWithNewlines("Alice");
        Participant aliceP = diagram.getOrCreateParticipant("Alice", aliceD);

        Display label = Display.getWithNewlines("hello");
        ArrowConfiguration config = ArrowConfiguration.withDirectionNormal();

        Message msg = new Message(bobP, aliceP, label, config, diagram.getNextMessageNumber());

        checkState(null == diagram.addMessage(msg));

        // 3. Output the diagram
        // See net.sourceforge.plantuml.SourceStringReader#generateImage
        diagram.makeDiagramReady();
        checkState(1 == diagram.getNbImages());
        try (OutputStream os = new FileOutputStream(file)) {
            ImageData imageData = diagram.exportDiagram(os, 0, new FileFormatOption(FileFormat.PNG));
            System.out.println("generateFromApi: " + diagram.getDescription().getDescription());
        }
    }

    private static void generateFromStringSource(File file) throws IOException {
        String source = "@startuml\n";
        source += "Bob -> Alice : hello\n";
        source += "@enduml\n";

        StringBuffer stringBuffer = new StringBuffer();

        SourceStringReader reader = new SourceStringReader(source);
        // Write the first image to "png"
        String desc = reader.generateImage(file);
        // Return a null string if no generation
        System.out.println("generateFromStringSource: " + desc);
    }
}
Error: Exception in thread "main" java.lang.IllegalAccessError: class net.sourceforge.plantuml.png.PngIOMetadata (in unnamed module @0x9597028) cannot access class com.sun.imageio.plugins.png.PNGMetadata (in module java.desktop) because module java.desktop does not export com.sun.imageio.plugins.png to unnamed module @0x9597028
    at net.sourceforge.plantuml.png.PngIOMetadata.writeWithMetadata(PngIOMetadata.java:60)
    at net.sourceforge.plantuml.png.PngIO.write(PngIO.java:86)
    at net.sourceforge.plantuml.png.PngIO.write(PngIO.java:80)
    at net.sourceforge.plantuml.ugraphic.g2d.UGraphicG2d.writeImageTOBEMOVED(UGraphicG2d.java:219)
    at net.sourceforge.plantuml.ugraphic.ImageBuilder.writeImageInternal(ImageBuilder.java:249)
    at net.sourceforge.plantuml.ugraphic.ImageBuilder.writeImageTOBEMOVED(ImageBuilder.java:171)
    at net.sourceforge.plantuml.sequencediagram.graphic.SequenceDiagramFileMakerPuma2.createOne(SequenceDiagramFileMakerPuma2.java:234)
    at net.sourceforge.plantuml.sequencediagram.SequenceDiagram.exportDiagramInternal(SequenceDiagram.java:222)
    at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:236)
    at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:127)
    at net.sourceforge.plantuml.SourceStringReader.generateImage(SourceStringReader.java:124)
    at net.sourceforge.plantuml.SourceStringReader.generateImage(SourceStringReader.java:111)
    at net.sourceforge.plantuml.SourceStringReader.generateImage(SourceStringReader.java:101)
    at scr.graphviz.sk.PlantUMLDemoMain.generateFromStringSource(PlantUMLDemoMain.java:66)
    at scr.graphviz.sk.PlantUMLDemoMain.main(PlantUMLDemoMain.java:23)

我发现一个有类似问题的人,较旧版本的Plantuml对他有用。我有旧版本的罐子文件,但我不确定如何应用。我尝试检查文件并找出使用的库版本,并为它们添加了Maven依赖项,但似乎没有用。

我提到的这是类似的问题 https://github.com/plantum.com/plantuml/plantuml/plantuml/sissues/69 <69 < /a>

I'm trying to make a simple graph using java but keep getting error

Code:

public class PlantUMLDemoMain {
    public static void main(String[] args) throws Exception {
        generateFromStringSource(new File("from-string.png"));
        generateFromApi(new File("from-api.png"));
    }

    private static void generateFromApi(File file) throws IOException {
        // 1. setup:
        SequenceDiagramFactory f = new SequenceDiagramFactory();
        SequenceDiagram diagram = f.createEmptyDiagram();

        // 2. Build the diagram:
        // "Bob -> Alice : hello"
        // See net.sourceforge.plantuml.sequencediagram.command.CommandArrow#executeArg
        Display bobD = Display.getWithNewlines("Bob");
        Participant bobP = diagram.getOrCreateParticipant("Bob", bobD);
        Display aliceD = Display.getWithNewlines("Alice");
        Participant aliceP = diagram.getOrCreateParticipant("Alice", aliceD);

        Display label = Display.getWithNewlines("hello");
        ArrowConfiguration config = ArrowConfiguration.withDirectionNormal();

        Message msg = new Message(bobP, aliceP, label, config, diagram.getNextMessageNumber());

        checkState(null == diagram.addMessage(msg));

        // 3. Output the diagram
        // See net.sourceforge.plantuml.SourceStringReader#generateImage
        diagram.makeDiagramReady();
        checkState(1 == diagram.getNbImages());
        try (OutputStream os = new FileOutputStream(file)) {
            ImageData imageData = diagram.exportDiagram(os, 0, new FileFormatOption(FileFormat.PNG));
            System.out.println("generateFromApi: " + diagram.getDescription().getDescription());
        }
    }

    private static void generateFromStringSource(File file) throws IOException {
        String source = "@startuml\n";
        source += "Bob -> Alice : hello\n";
        source += "@enduml\n";

        StringBuffer stringBuffer = new StringBuffer();

        SourceStringReader reader = new SourceStringReader(source);
        // Write the first image to "png"
        String desc = reader.generateImage(file);
        // Return a null string if no generation
        System.out.println("generateFromStringSource: " + desc);
    }
}
Error: Exception in thread "main" java.lang.IllegalAccessError: class net.sourceforge.plantuml.png.PngIOMetadata (in unnamed module @0x9597028) cannot access class com.sun.imageio.plugins.png.PNGMetadata (in module java.desktop) because module java.desktop does not export com.sun.imageio.plugins.png to unnamed module @0x9597028
    at net.sourceforge.plantuml.png.PngIOMetadata.writeWithMetadata(PngIOMetadata.java:60)
    at net.sourceforge.plantuml.png.PngIO.write(PngIO.java:86)
    at net.sourceforge.plantuml.png.PngIO.write(PngIO.java:80)
    at net.sourceforge.plantuml.ugraphic.g2d.UGraphicG2d.writeImageTOBEMOVED(UGraphicG2d.java:219)
    at net.sourceforge.plantuml.ugraphic.ImageBuilder.writeImageInternal(ImageBuilder.java:249)
    at net.sourceforge.plantuml.ugraphic.ImageBuilder.writeImageTOBEMOVED(ImageBuilder.java:171)
    at net.sourceforge.plantuml.sequencediagram.graphic.SequenceDiagramFileMakerPuma2.createOne(SequenceDiagramFileMakerPuma2.java:234)
    at net.sourceforge.plantuml.sequencediagram.SequenceDiagram.exportDiagramInternal(SequenceDiagram.java:222)
    at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:236)
    at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:127)
    at net.sourceforge.plantuml.SourceStringReader.generateImage(SourceStringReader.java:124)
    at net.sourceforge.plantuml.SourceStringReader.generateImage(SourceStringReader.java:111)
    at net.sourceforge.plantuml.SourceStringReader.generateImage(SourceStringReader.java:101)
    at scr.graphviz.sk.PlantUMLDemoMain.generateFromStringSource(PlantUMLDemoMain.java:66)
    at scr.graphviz.sk.PlantUMLDemoMain.main(PlantUMLDemoMain.java:23)

I found someone with similar problem and older version of plantuml worked for him. I have jar file of the older version but I'm not sure how to apply it. I tried inspecting the file and find out versions of libraries used and added maven dependencies for them but it didnt seem to work.

This is similar problem i mentioned https://github.com/plantuml/plantuml/issues/69

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

任谁 2025-02-19 08:06:51

com.sun.imageio.plugins.png.pngmetadata class 在Oracle JDK中存在,但在OpenJDK上不存在。
LIB的升级应解决问题,例如:

<dependency>
    <groupId>net.sourceforge.plantuml</groupId>
    <artifactId>plantuml</artifactId>
    <version>1.2023.6</version>
</dependency>

参考: https://github.com/plantumll /plantuml/essess/69

The com.sun.imageio.plugins.png.PNGMetadata class exists in Oracle JDK but does not exist on OpenJDK.
Upgrade of the lib should solve the issue, e.g.:

<dependency>
    <groupId>net.sourceforge.plantuml</groupId>
    <artifactId>plantuml</artifactId>
    <version>1.2023.6</version>
</dependency>

Reference: https://github.com/plantuml/plantuml/issues/69

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文