On Tue, 13 Apr 2021 13:04:53 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> Alexander Scherbatiy has updated the pull request incrementally with one >> additional commit since the last revision: >> >> Remove mt.exe from win.gradle build script > > buildSrc/win.gradle line 474: > >> 472: boolean isExecutable(String file) { >> 473: try { >> 474: Runtime.runtime.exec(file) > > Is there a way other than to execute the command in question -- `rc` or > `fxc` -- to see whether it will execute? I note that `fxc` will print a > warning message when run with no arguments (but even with `gradle --info` it > isn't printed to the console). There is File.canExecute() method but it looks like it only check that the java program is allowed to run a file rather the file is really executed. `Runtime.runtime.exec(file)` creates a ProcessBuilder and returns a Process object. To get the program output it needs to read the process output and error streams. Here is the program which I used to check File.canExecute() and `Runtime.runtime.exec(file)` methods. File.canExecute() returns true for both x64 and arm64 fxc.exe files. `Runtime.runtime.exec(file)` passes for x64 fxc file and fails for arm64 one on Windows x86_64: import java.io.File; public class CheckFile { public static void main(String[] args) throws Exception { File file = new File(args[0]); System.out.printf("input file : %s%n", file); System.out.printf("file exists: %b%n", file.exists()); System.out.printf("can execute: %b%n", file.canExecute()); Runtime.getRuntime().exec(file.getAbsolutePath()); } } The output is: java CheckFile "c:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x64/fxc.exe" input file : c:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\fxc.exe file exists: true can execute: true java CheckFile "c:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/arm64/fxc.exe" input file : c:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\arm64\fxc.exe file exists: true can execute: true Exception in thread "main" java.io.IOException: Cannot run program "c:\Program": CreateProcess error=193, %1 is not a valid Win32 application ------------- PR: https://git.openjdk.java.net/jfx/pull/439