Problems running PlantUML since Doxygen 1.8.10 (Windows)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Problems running PlantUML since Doxygen 1.8.10 (Windows)

Vega, Luis A

Ever since 1.8.10 was release, I'm unable to run doxygen (under Windows) on anything with a PlantUML diagram. The same files will build without any problems using Doxygen v 1.8.9.1.

No matter what I do, or how the PATH enviroment variable is adjusted I still get:
error: Problems running PlantUML. Verify that the command 'java -jar "<path>\plantuml.jar" -h' works from the command line (where <path> is my path to PlantUML, not the actual text).

As other have notice, the command in itself runs from the command line without any problem.

Something changed between 1.8.9.1 and 1.8.10 that broke execution of Java from within doxygen (on Windows 7). The problem is actually worst on the Cygwin version of Doxygen (it prefixes the cygwin path of the running dir to the plantuml.jar path no matter the format).

Does anybody have any clue on how to fix this problem?
Or can I at least get a little clue on where the change happened so that I can manually fix the source code?

Any assistance will be greatly appreciated.

Note:
I use an environment variable to configure the location of the PlantUML jar-file since hardcoding would require all users to have direct access to the path. Here is an example:

PLANTUML_JAR_PATH = $(PLANTUML_HOME)/plantuml.jar

 


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users
Reply | Threaded
Open this post in threaded view
|

Re: Problems running PlantUML since Doxygen 1.8.10 (Windows)

Christoph Lipka
I guess this is actually unrelated to the 1.8.9.1 -> 1.8.10 update, but
rather due to updates in Java and Windows.

Oracle has a habit of thinking they know better than best practices
and/or Microsoft guidelines how to install software on Windows machines.
One of their genius ideas was to install each Java version in a
differently named directory. Obviously this meant that each Java version
update would also require updating the PATH environment variable
accordingly, which can be a messy business in certain cases.

To get around this, a while ago they had another great idea: Instead of
adding the actual Java binary directory to the PATH environment
variable, they would instead add some standard directory, where they
would place symbolic links to the actual Java binaries. Their Java
updater would then no longer have to mess with the PATH environment
variable anymore, and would instead just replace the symbolic links.

However, a few months ago Microsoft identified a security loophole
involving the execution of symbolic links via a certain API, and
therefore blocked the possibility to execute symlinks in this manner.

There is obviously at least one other API that still allows execution of
symlinks, but unfortunately Doxygen invokes java via the API that can't
execute symlinks anymore.

The Windows Explorer is another piece of software that can no longer
execute symlinks.


My workaround for this issue is to run Doxygen from a batch file
invoking the following commands:

-----------------------------------------------------------------------
call :JAVA_SYMLINK_FIX
... (run Doxygen)
goto :EOF

...

:JAVA_SYMLINK_FIX
rem set JAVA_EXE to whatever java.exe is found via the path
call :FIND_IN_PATH JAVA_EXE java.exe
rem set TRUE_JAVA_EXE to the actual file java.exe points to
rem (if it is a symlink), or an empty string otherwise
call :FIND_SYMLINK TRUE_JAVA_EXE "%JAVA_EXE%"
rem if the java.exe found via the path is not a symlink, we're done
if "%TRUE_JAVA_EXE%" == "" goto :EOF
echo "%JAVA_EXE%" is actually a symlink pointing to "%TRUE_JAVA_EXE%"
rem set JAVA_EXE_DIR to the directory in which
rem the actual java.exe resides
call :SET_DIR JAVA_EXE_DIR "%TRUE_JAVA_EXE%"
rem prepend JAVA_EXE_DIR to the path variable
set PATH=%JAVA_EXE_DIR%;%PATH%
goto :EOF

:FIND_IN_PATH
set %1=%~dp$PATH:2%2
goto :EOF

:FIND_SYMLINK
rem Sets the environment variable named by %1
rem to the file pointed to by %2 if that's a symlink.
rem Sets the environment variable to an empty string otherwise.
set %1=
for /F "usebackq tokens=2 delims=[]" %%i in (`dir "%~2" /N`) do set %1=%%i
goto :EOF

:SET_DIR
rem sets the environment variable named by %1
rem to the directory of the file named by %2.
set %1=%~dp2
goto :EOF
-----------------------------------------------------------------------


Am 19.02.2016 um 22:20 schrieb Vega, Luis A:

> Ever since 1.8.10 was release, I'm unable to run doxygen (under Windows)
> on anything with a PlantUML diagram. The same files will build without
> any problems using Doxygen v 1.8.9.1.
>
> No matter what I do, or how the PATH enviroment variable is adjusted I
> still get:
> error: Problems running PlantUML. Verify that the command 'java -jar
> "<path>\plantuml.jar" -h' works from the command line (where <path> is
> my path to PlantUML, not the actual text).
>
> As other have notice, the command in itself runs from the command line
> without any problem.
>
> Something changed between 1.8.9.1 and 1.8.10 that broke execution of
> Java from within doxygen (on Windows 7). The problem is actually worst
> on the Cygwin version of Doxygen (it prefixes the cygwin path of the
> running dir to the plantuml.jar path no matter the format).
>
> Does anybody have any clue on how to fix this problem?
> Or can I at least get a little clue on where the change happened so that
> I can manually fix the source code?
>
> Any assistance will be greatly appreciated.
>
> Note:
> I use an environment variable to configure the location of the PlantUML
> jar-file since hardcoding would require all users to have direct access
> to the path. Here is an example:
>
> PLANTUML_JAR_PATH = $(PLANTUML_HOME)/plantuml.jar
>
>  
>
>
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>
>
>
> _______________________________________________
> Doxygen-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/doxygen-users
>

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users