Multilingual Wiki Documentation

You are currently using syntax.
In an attempt to improve PlantUML documentation...
Please do not use this website for your own diagrams.
You can click here and use the online server here for your own documentation.

Wiki Toc    View page history    Add new chapter    Reorder page    Raw


Frequently Asked Questions (FAQ)


What's the goal of PlantUML?

PlantUMLは、シンプルで人間が読むことのできるテキストの記述を使って、UMLの図を描くために使われます。 ご注意いただきたいのは、矛盾した図が描画されてしまうことです。(例えば、2つのクラスがお互いに継承し合うような図です。) ですからPlantUMLは、モデリングツールというよりはむしろ描画ツールです。

PlantUML is used to draw UML diagrams, using a simple and human readable text description.
Be careful, because it does not prevent you from drawing inconsistent diagrams (such as having two classes inheriting from each other, for example). So it's more a drawing tool than a modeling tool.

PlantUML Serverで生成した画像はいつまで保持されますか?

How long do the images generated by PlantUML Server live for?

PlantUML Server で生成されたPNG画像やSVG画像へのリンクは永続的に有効です (つまりサーバが死なない限りは)。

これは矛盾しているように聞こえるかもしれませんが、そうではありません。全ての図は圧縮されURL自身に埋め込まれます。URLを受け取ると、サーバはURLから図のテキスト情報を復元し、画像を生成します。 このため、何も保持する必要がないのです。仮にサーバがダウンしたとしても、コマンドライン-decodeurlフラグを使用すれば図の内容を取得することが可能です。さらに、図のデータはPNG画像のメタデータに保存されているため、ダウンロードした画像からも図の内容を取得することが可能です。




Links to png or svg generated by PlantUML Server are valid forever (that is as long as the server is up).
However, we do not store any diagrams on our servers.

This may sound contradictory. It is not: the whole diagram is compressed into the URL itself. When the server receives the URL, it decompresses the URL to retrieve the diagram text and generates the image. There is no need to store anything. Even if the server is down, you can retrieve the diagram using the flag -decodeurl with the command line. Furthermore, the diagram data is stored in PNG metadata, so you can fetch it even from a downloaded image.

Occasionally we may activate HTTP traces on our server. This is mainly for performance issues (when we have some) to understand the traffic we get. Once the issue solved, we turn back off HTTP traces and we remove the logs.

Concerning sensitive content: even if we do not store the generated diagrams, please be aware that all traffic goes through HTTP, so it's easy to catch.

So you should probably install a local server on your own network if you plan to generate diagrams with sensitive information. You can do this with no Java/J2EE knowledge since there is a tiny web server included in PlantUML.jar.

動かない !

It does not work on my config!

PlantUML は様々なシステムでインストールされており、インストール時に発生したマイナーな問題がユーザから報告されることがあります。

PlantUML has been installed on various systems, and some users have reported minor issues when installing it.
You can have a look on this page which give advises if something is wrong.

どのバージョンの Graphviz を使うべきでしょうか?

Which version of Graphviz should I use?



  • 2.26.3
  • 2.28
  • 2.30.1
  • 2.34
  • 2.36
  • 2.38
  • 2.44

注意: バージョン 2.39 と 2.42 は PlantUMLではうまく動作しないようです.

バージョン2.44をWindowsで使用する場合、インストールを完了させるために、以下の例のようにdot -cをコマンドラインで実行する必要があるかもしれません。

dot -cコマンドは管理者権限で実行する必要があるかもしれません。

他の選択肢は、Win32 version of GraphViz 2.44をインストールすることです。こちらの場合、インストール後の作業は不要です。

Graphviz を自身でコンパイルする場合は、 PlantUML が動作するのに必要な libexpat もビルドする必要があります。

You have more information about Graphviz about Graphviz here.

The following version have been tested, and are known to work:

  • 2.26.3
  • 2.28
  • 2.30.1
  • 2.34
  • 2.36
  • 2.38
  • 2.44

Note that versions 2.39 to 2.42 do not work very well with PlantUML.

With version 2.44, under Windows, you may have to run dot -c in a command line to finalize the installation, like in the following example:

You may have to run dot -c with Administrator Right.

Another option is to install Win32 version of GraphViz 2.44 which does not require this post-install process.

If you compile Graphviz by yourself, you have to build it with libexpat in order to work with PlantUML.


Is this mature? I don't see any new release?

Google Trendsは前向きな傾向です。そして、PlantUMLに関する本もいくつかあります。つまり、成熟していると言えるでしょう。



java -jar plantuml.jar -version



Google Trends are somehow positive. And there are few books that mention PlantUML. So yes, it's mature.

Note that PlantUML is developed with continuous integration in mind. That means that there are new releases quite often, with (hopefully!) backward compatibility. So the file PlantUML.jar may changed over time, while keeping the same name.

If you want to know the exact version you are using, you can type in the command line:

java -jar plantuml.jar -version

or use the following small special diagram description:



How to know if a new release is available?




java -jar plantuml.jar -version



To check if a newer version is available for download, you can go to the download page.

You can also subscribe to the following rss flows:

Or you can use the command line:

java -jar plantuml.jar -version

Or use the following small special diagram description:



I have an error message with the Eclipse Plugin.

以下のようなエラーメッセージが表示されたようでしたら :

The currently displayed page contains invalid values

Windows/Preferences/PlantUML が表示されている場合、Eclipseを終了して、コマンドラインから-cleanフラグを使用してみてください。

eclipse -clean

If you have the following error message :

The currently displayed page contains invalid values

when displaying the Windows/Preferences/PlantUML, you should try to quit Eclipse and use the -clean flag on the command line:

eclipse -clean


I want to generate huge diagrams!






java -DPLANTUML_LIMIT_SIZE=8192 -jar /path/to/plantuml.jar ...

ただし、非常に大きな(例えば、 20 000 x 10 000 ピクセルを超えるような)図を作成しようとした場合、メモリ問題が発生する可能性があります。 この場合、以下のパラメータをjava vmに与える必要があります。-Xmx1024m.

PlantUML limits image width and height to 4096. There is an environment variable that you can set to override this limit: PLANTUML_LIMIT_SIZE. You have to define this variable before launching PlantUML, something like:




Another way is an option in the command line:

java -DPLANTUML_LIMIT_SIZE=8192 -jar /path/to/plantuml.jar ...

Note that if you generate very big diagrams, (for example, something like 20 000 x 10 000 pixels), you can have some memory issues. The solution is to add this parameter to the java vm : -Xmx1024m.


I have issues with accented characters.


java -jar plantuml.jar -help

-charset xxx To use a specific charset (default is windows-1252)


java -jar plantuml.jar -charset UTF-8 ...

unicodeに関する情報はこちら。Javaは、UTF-8に設定した場合でもB.O.M. (Byte Order Mark)をサポートしませんが、PlantUMLに回避策が含まれているので、これに関する問題は発生しません。

Characters encoding is a subtle thing... By default, PlantUML use the default charset of your platform, which may or may not be UTF-8 . If you want to know which charset you are using, you can type the following command:

java -jar plantuml.jar -help

-charset XYZ To use a specific charset (default is windows-1252)

If you want to use a different charset, for example UTF-8, you can use the -charset flag :

java -jar plantuml.jar -charset UTF-8 ...

You can also find here information about unicode . Note that even if Java does not support B.O.M. (Byte Order Mark) in UTF-8 format file, a workaround has been put into PlantUML, so this should not be an issue.


I have issues with Asian characters.


export LANG = ja_JP.UTF-8


Some Japanese users reported that they have to set the LANG variable to ja_JP.UTF-8 in their shell before launching PlantUML.

export LANG = ja_JP.UTF-8

Since the new architecture, it should simply work, because Java knows how to draw East Asian characters.


How to generate EPS?

コマンドラインにて -eps フラグを入力するか、ANT タスクにて format="eps" を指定してください。

You can use the -eps flag in the command line, or format="eps" in the ANT task.

XMI形式ファイルの対応状況は ?

What about XMI?

現在、対応に向けて 取り組んで います。

Work is in progress.


Is @startuml needed in with -pipe flag?

短い回答: ダイアグラムの開始には必ず @startuml (もしくは @startditaa、@startjcckit...)を使用してください。


@startuml/@startditaa/@startjcckit はダイアグラムの種類(uml, ditaa, jcckit...)を決定するのに役立っています。そして、@start○○の後に任意でファイル名を記述することができます。また、一つのファイルに複数のダイアグラムを含めることもできます。


その後、この仕様は訂正されることになり、-pipeフラグを使用した場合も含めて、常に@start○○が必要となりました。これは、ユーザの混乱を防ぐためでもあります。 残念ながら、-pipeフラグ使用時に@startumlが不要であるという事実に基づいて作られた既存のスクリプトが存在しているため、それらの古いスクリプトが実行できるように、この仕様はdeprecatedな選択肢として残してあります。私たちは後方互換性に気を配っています。


Short answer: You do have to use @startuml (or @startditaa/@startjcckit...) when starting a diagram.

Long answer:

The @startuml/@startditaa/@startjcckit is useful to determine the type of diagram (uml, ditaa, jcckit...), and because you can optionally put a filename after the @startXYZ. This also allows to have several diagrams inside the same file.

Earlier versions of PlantUML were not supporting ditaa or jcckit. When you use -pipe flag, since the diagram is generated to standard output, there could be only one diagram in the standard input. And there is no need to specify a filename. For all those reasons, @startuml was not needed when using -pipe flag at that time.

Later, it has been decided to normalize this, and to impose @startXYZ everywhere, even with -pipe flag, because it was confusing for users. Unfortunately, since some existing scripts were already using the fact that @startuml is not needed in -pipe flag, it has been decided to keep this as a deprecated option, just to allow older scripts to run. We indeed do pay attention of ascending compatibility.

For newer scripts, you should not rely on this, and use @startXYZ/@endXYZ with the -pipe flag.


Under which license is PlantUML distributed?

PlantUMLはGPLライセンスの下で配布されています。 次のコマンドラインオプションを使ってライセンスを出力することができます。

java -jar plantuml.jar -license



PlantUML is distributed under the GPL license.
You can print the license using the command line option:

java -jar plantuml.jar -license

Or you can use the special diagram:


私は GPL ライセンスなんて嫌いですよ! 大っ嫌い!!

I don't like GPL!




java -jar plantuml.jar -license



You can also use:

Those versions miss few features (DITAA for example), but are 100% able to generate UML diagrams.

You can print the license of these versions using the command line option:

java -jar plantuml.jar -license

Or you can use the special diagram:



Are images generated by PlantUML covered by the GPL/LGPL/ASL/EPL/MIT license?


PlantUMLを実行して生成した画像は、そのフォーマット(PNG, SVG...)にかかわらず、対応するソースコード(つまり、PlantUML言語のテキストによる記述)の作成者の所有物となります。

PlantUMLを実行して生成した画像は、「対象著作物(covered work)」とはみなされません。それらは自由に使用することができます。



No, they are not.

Images (whatever their format : PNG, SVG...) generated by the execution of PlantUML are owned by the author of their corresponding sources code (that is, their textual description in PlantUML language).

Images generated by the execution of PlantUML are not considered as covered work. You can do whatever you want with them.

The generated images can then be used without any reference to the GPL/LGPL/ASL/EPL/MIT license. It is not even necessary to stipulate that they have been generated with PlantUML, although this will be appreciated by PlantUML team.

There is an exception : if the textual description in PlantUML language is also covered by some license (like the GPL/LGPL/ASL/EPL/MIT), then the generated images are logically covered by this license.


Can I redistribute the LGPL binary file PlantUML.jar and if there any constraints about it?




As long as you do not modify the Java source code and the jar file, you can integrate PlantUML.jar in your own closed source software.

The only constraint is that you have to mention somewhere in your own license or in your documentation that you are using PlantUML and that PlantUML is distributed under LGPL.

You can then even sell your software and earn money, without any other constraints (although donation will be appreciate in that case :-)


What is the license of the PlantUML syntax?


コード中のコメントとしてPlantUMLを使用することができます。そのコメントはあなた自身の所有物となります。それらは「対象著作物(covered work)」とはみなされず、GPL/LGPL/APL/EPL/MITライセンスの対象でもありません。


There are no license for the PlantUML syntax itself : this means that everybody can use it.

So you can use PlantUML comments into your own code : those comments are owned by yourself, and are not considered as covered work, and are not covered by the GPL/LGPL/APL/EPL/MIT license.

Only the current implementation (that is, PlantUML program) is licensed under GPL, LGPL, ASL, EPL or MIT. On the other hand note that the documentation (examples, notices, ...) published in the PlantUML website is copyrighted. But you can still write your own documentation.


What does EmptySvgException mean?



  • Graphvizのインストールに問題があった場合。クラス一つだけなどの簡単なダイアグラムの生成を試してみてください。
  • Graphvizのバージョンが古すぎて、PlantUMLから渡された情報を処理できなかった場合。testdotコマンドでバージョンを確認してください。
  • ダイアグラムが複雑すぎる場合。
  • PlantUML and/or dotのバグ。

PlantUML is using Graphviz to generate some diagrams. So PlantUML is launching dot program and retrieve the information generated by dot as a SVG flow.

This message means that PlantUML is getting an empty flow from dot execution, and therefore cannot generate UML diagrams. There may be several reasons why this happens:

  • There is an issue with your Graphviz installation. Try a very simple diagram, with only one class for example.
  • Your version of Graphviz is too old and is crashing with information provided by PlantUML. Check your version with testdot
  • Your diagram is too complex.
  • There is a bug in PlantUML and/or in dot.

Could not initialize class net.sourceforge.plantuml.ugraphic.UFont

Could not initialize class net.sourceforge.plantuml.ugraphic.UFont

java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.plantuml.ugraphic.UFontというエラーメッセージが表示された場合、それは、サーバーにフォントがインストールされていないことを意味していると思われます。


sudo yum install fontconfig


sudo apt-get install fontconfig

If you have the error message java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.plantuml.ugraphic.UFont, it probably means that there are no fonts installed on your server.

You can solve it by adding fontconfig on your system:

sudo yum install fontconfig


sudo apt-get install fontconfig


I have a message complaining about X11 or headless!


  • Can't connect to X11 window
  • X11 connection rejected because of wrong authentication.
  • HeadlessException

基本的にこれは、PlantUMLがグラフィック関連のリソースを必要としていることが原因です(詳しくはこちら)。 PlantUMLをheadlessモードに設定するには-Djava.awt.headless=trueフラグを使用してください。


/usr/bin/java -Djava.awt.headless=true -jar /data/PlantUml/plantuml.jar ...

If you are running PlantUML on a linux server without graphical capability, you may have some error message:

  • Can't connect to X11 window
  • X11 connection rejected because of wrong authentication.
  • HeadlessException

Basically, this is because PlantUML needs to have access to some graphical resources (more information here). You can turn PlantUML to headless mode, using the flag -Djava.awt.headless=true. For example:

/usr/bin/java -Djava.awt.headless=true -jar /data/PlantUml/plantuml.jar ...

Mac OS XでUnsatisfiedLinkErrorというエラーが表示されます。

I have an UnsatisfiedLinkError under Mac OS X!

Mac OS Xで次のようなエラーが表示された場合、

Error java.lang.UnsatisfiedLinkError / liblwawt.dylib /libosxapp.dylib


  1. JavaForOSXというパッケージをダウンロードし、インストールします。
  2. AptanaStidio3.iniというファイルを探します。デフォルトでは次のディレクトリにあります: /Applications/Aptana Studio 3/
  3. -vm引数で使用するJavaを指定してAptana Studioを起動します: -vm /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

Java 6のみで動作するようなので、次のようなエイリアスを定義してスクリプト中で使用してください。

alias java6="export JAVA_HOME=$(/usr/libexec/java_home -v 1.6.0)"

Under Mac OS X, if you have some error message like:

Error java.lang.UnsatisfiedLinkError / liblwawt.dylib /libosxapp.dylib

You need to follow the instructions on

  1. Download and install the package: JavaForOSX.
  2. Found the file AptanaStidio3.ini, the file by default located under the directory here: /Applications/Aptana Studio 3/
  3. Add -vm argument to specify the java which will be used to lunch Aptana Studio: -vm /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

This seems to work only under Java 6, so you may define the following alias to be used in your scripts.

alias java6="export JAVA_HOME=$(/usr/libexec/java_home -v 1.6.0)"


PlantUML scripts are grabbing keyboard/window focus!


/usr/bin/java -Djava.awt.headless=true -jar /path/to/plantuml.jar ...

Depending on your configuration, you can try the flag -Djava.awt.headless=true.
For example:

/usr/bin/java -Djava.awt.headless=true -jar /path/to/plantuml.jar ...


I found an issue, but I cannot provide my diagram showing the issue because my diagram contains confidential data



-cypherオプションを付けて何度か実行すると分かるように、毎回異なるテキストが生成されます。 また、この変換を行っているCypher.javaを見ると、元のダイアグラムを復元するようなバックドアが存在しないことを確認できると思います。

元のダイアグラムで何か問題が発生する場合、変換されたファイルでも同じ問題が発生することが期待できます。 変換後のファイルは全く無意味なものなので、安心して私たちに送ってください。あなたが元々何を作っていたのかを推測する手段は、私たちにはありません。


There is a -cypher option the command line that generates a .preproc file instead of regular image file.

The .preproc generated file looks like the input diagram expect that all words (except PlantUML language keywords) have been replaced by a random set of letters.

You can double check this by running several time the -cypher option (you will get a different text each time). You may also look at the class used to execute this transformation to be sure that there are no backdoor there to retrieve back your original diagram.

If there is an issue in your original diagram, the same issue is likely to also occur with the cyphered one. Since the cyphered text is really meaningless, you can safely share it with us : there will be no way for us to guess what you are really working on.

But we will be able to reproduce the issue and fix it so that you can have your original (and confidential) diagram working.


I have a question that is not here!

その場合には、この フォーラム で質問してみてください。


You can use the forum facility.

Someone will try to answer your question there.

Please report any bugs to or here.
This website is still in beta testing.