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

如何解决doxygen错误:运行PlantUML时出现的问题?,doxygen,plantuml,Doxygen,Plantuml,我已经成功地使用了一段时间了。我还使用graphviz中的点。现在我正在尝试集成PlantUML。我安装了java并下载了plantuml.jar。我在我的一个doxygen注释块中添加了一个简单的示例 /*! \brief get the server's response to our upload \returns a \ref ServerResponse \startuml{getServerUploadResponse.png} "gettin

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

/*!
    \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配置文件设置为:

HAVE_DOT               = YES
PLANTUML_JAR_PATH      = "Z:\Kane\softwareDev\tools\plantuml.jar"
但是多西根给了我一个错误;这是我的控制台输出(我在win7上使用mingw)


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

这似乎是ShellExecuteEx()的另一个bug,除了symlink()的问题之外。除了添加.exe扩展名以使其与java文件夹不匹配之外,我不知道如何修复它。我还发现同样的问题也发生在当前工作目录中的Java文件夹上。在本例中,ShellExecuteEx()似乎在查看路径之前使用Java文件夹。因此,修改路径没有帮助


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

问题是PlantUML无法定位
可执行文件

PlantUML要求:

  • Dot
    可执行文件位于
    PATH
    环境变量中
  • GRAPHVIZ_DOT
    环境变量设置为可执行
如果不是这样,它就不起作用

工作流程如下:

  • Doxygen提取
    @startuml
    @enduml
    标记之间的内容
  • 该输出被移交给PlantUML
  • PlantUML使用
    Dot
    -根据图表类型生成图表(例如,活动图表不需要
    Dot
  • 解决方案:

  • set“GRAPHVIZ\u DOT=c:\path\to\GRAPHVIZ\bin\DOT.exe”
  • doxygen-doxyconfig
  • 现在,PlantUML能够通过使用
    GRAPHVIZ_Dot
    环境变量定位
    Dot
    可执行文件


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

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

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

    将一个替换为另一个可以修复此问题


    请注意,您可能需要在每次升级JRE时重新查看此问题。

    这是一个很好的建议,但并没有解决我的问题。我发现在我的路径中有一个java文件夹,但是在它之前插入java的“true”路径并没有解决问题。我仍然得到与上面描述的相同的错误。我遵循了提供的链接,但那里的建议与您的答案几乎相同。。。处理java.exesymlinks@KaneAnderson你能找到问题的答案吗?我尝试删除所有java路径,只包括硬编码的版本变量,但我仍然从doxygen得到相同的错误。
    $ 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
    
    $