首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决doxygen错误:运行PlantUML时出现的问题?

如何解决doxygen错误:运行PlantUML时出现的问题?
EN

Stack Overflow用户
提问于 2015-06-12 04:12:51
回答 3查看 3.4K关注 0票数 4

我已经成功地使用doxygen一段时间了。我还使用了graphviz中的DOT。现在我正在尝试集成PlantUML。我安装了java并下载了plantuml.jar。我在我的doxygen注释块中添加了一个简单的示例

代码语言:javascript
复制
/*!
    \brief      get the server's response to our upload
    \returns    a \ref ServerResponse
    \startuml{getServerUploadResponse.png} "getting the server response"
                device -> server: test1
                server --> device: test2
    \enduml
*/

..。并像这样设置doxygen配置文件:

代码语言:javascript
复制
HAVE_DOT               = YES
PLANTUML_JAR_PATH      = "Z:\Kane\softwareDev\tools\plantuml.jar"

但是doxygen给了我一个错误;这是我的控制台输出(我在win7上使用了mingw )

代码语言:javascript
复制
$ doxygen doxyconfig
error: Problems running PlantUML. Verify that the command 'java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -h' works from the command line. Exit code: 1

$ java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -h
Usage: java -jar plantuml.jar [options] -gui
        (to execute the GUI)
    or java -jar plantuml.jar [options] [file/dir] [file/dir] [file/dir]
        (to process files or directories)

You can use the following wildcards in files/dirs:
        *       means any characters but '\'
        ?       one and only one character but '\'
        **      means any characters (used to recurse through directories)

where options include:
    -gui                To run the graphical user interface
    -tpng               To generate images using PNG format (default)
    -tsvg               To generate images using SVG format
    -teps               To generate images using EPS format
    -tpdf               To generate images using PDF format
    -tvdx               To generate images using VDX format
    -txmi               To generate XMI file for class diagram
    -thtml              To generate HTML files for class diagram
    -ttxt               To generate images with ASCII art
    -tutxt              To generate images with ASCII art using Unicode characters
    -o[utput] "dir"     To generate images in the specified directory
    -DVAR1=value        To set a preprocessing variable as if '!define VAR1 value' were used
    -Sparam1=value      To set a skin parameter as if 'skinparam param1 value' were used
    -r[ecurse]          recurse through directories
    -config "file"      To read the provided config file before each diagram
    -charset xxx        To use a specific charset (default is windows-1252)
    -e[x]clude pattern  To exclude files that match the provided pattern
    -metadata           To retrieve PlantUML sources from PNG images
    -version            To display information about PlantUML and Java versions
    -checkversion       To check if a newer version is available for download
    -v[erbose]          To have log information
    -quiet              To NOT print error message into the console
    -keepfiles          To NOT delete temporary files after process
    -h[elp]             To display this help message
    -testdot            To test the installation of graphviz
    -graphvizdot "exe"  To specify dot executable
    -p[ipe]             To use stdin for PlantUML source and stdout for PNG/SVG/EPS generation
    -encodesprite 4|8|16[z] "file"      To encode a sprite at gray level (z for compression) from an image
    -computeurl|-encodeurl      To compute the encoded URL of a PlantUML source file
    -decodeurl          To retrieve the PlantUML source from an encoded URL
    -syntax             To report any syntax error from standard input without generating images
    -language           To print the list of PlantUML keywords
    -nosuggestengine    To disable the suggest engine when errors in diagrams
    -checkonly          To check the syntax of files without generating images
    -failfast           To stop processing as soon as a syntax error in diagram occurs
    -failfast2          To do a first syntax check before processing files, to fail even faster
    -pattern            To print the list of Regular Expression used by PlantUML
    -duration           To print the duration of complete diagrams processing
    -nbthread N         To use (N) threads for processing
    -nbthread auto      To use 2 threads for processing
    -author[s]          To print information about PlantUML authors
    -overwrite          To allow to overwrite read only files
    -printfonts         To print fonts available on your system

If needed, you can setup the environment variable GRAPHVIZ_DOT.

$ echo $?
0

$ java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -version
PlantUML version 8026 (Sun Jun 07 04:19:09 CDT 2015)
(GPL source distribution)
Java(TM) SE Runtime Environment
Java HotSpot(TM) Client VM
1.8.0_45-b15
Windows 7

The environment variable GRAPHVIZ_DOT has not been set
Dot executable is c:\Program Files (x86)\Graphviz2.38\bin\dot.exe
Dot version: dot - graphviz version 2.38.0 (20140413.2041)
Installation seems OK. File generation OK

$ doxygen --version
1.8.9.1

$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)

$ doxygen doxyconfig
error: Problems running PlantUML. Verify that the command 'java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -h' works from the command line. Exit code: 1

$
EN

回答 3

Stack Overflow用户

发布于 2015-09-30 05:01:40

路径中可能有一个条目,其中包含名为Java的文件夹。从命令提示符运行的这个命令将告诉您位置:FOR /F %F IN ("java") DO ECHO %~$PATH:F。如果是这种情况,请在路径中该条目之前插入Java的路径。我找到这个是因为我在一台机器上遇到了这个问题,而不是在另一台机器上。

除了符号链接(doxywizard can't run PlantUML)的问题之外,这似乎是ShellExecuteEx()的另一个bug。除了添加.exe扩展名以使其与java文件夹不匹配之外,我不知道如何修复它。我还发现,当前工作目录中的Java文件夹也会出现同样的问题。在本例中,ShellExecuteEx()似乎在查看路径之前使用了Java文件夹。所以修改路径无济于事。

如果SHELLEXECUTEINFO没有扩展名,这可能是将".exe“附加到SHELLEXECUTEINFO的成员lpFile中的另一个很好的理由,或者永远不要依赖于正确设置的路径。

票数 1
EN

Stack Overflow用户

发布于 2016-05-24 21:01:24

问题是PlantUML无法找到Dot可执行文件。

PlantUML要求满足以下任一条件:

  • Dot可执行文件位于variable.
  • GRAPHVIZ_DOT环境中。PATH环境变量设置为可执行文件。

如果不是这样,它就不能工作!

工作流程如下:

  1. Dot).

提取@startuml@enduml标记之间的内容。

  • 此输出将移交给Dot).

使用Dot生成图表-具体取决于图表类型(例如,活动图表不需要do

解决方案:

  1. set "GRAPHVIZ_DOT=c:\path\to\graphviz\bin\dot.exe"
  2. doxygen doxyconfig

现在,PlantUML能够通过使用GRAPHVIZ_DOT环境变量来定位Dot可执行文件。

我不知道为什么Doxygen不能将Dot设置正确地交给PlantUML。此外,此错误通常仅在Windows上弹出。在GNU/Linux上,Dot可执行文件通常位于PATH中,可以通过PlantUML找到。

票数 1
EN

Stack Overflow用户

发布于 2018-02-09 17:28:37

这个问题是因为JRE放置的路径中的一些文件夹是符号链接。显然,符号链接可以从命令行执行,但不能从其他程序执行。

在我的系统上,路径设置为C:\ProgramData\Oracle\Java\javapath,这是一个指向C:\ProgramData\Oracle\Java\javapath_target_403710984的符号链接

用一个替换另一个可以解决这个问题。

请注意,您可能需要在每次升级JRE时重新访问它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30790538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档