Разработка плагина Eclipse - Gradle не запускается из модуля запуска Eclipse: java.io.IOException: доступ запрещен
Я разрабатываю плагин Eclipse для запуска Gradle из Eclipse как приложения (с использованием Eclipse LaunchConfiguration). Но даже после настройки JAVA_HOME
а также GRADLE_HOME
для этого нового процесса он заканчивается с ошибкой. Ниже то, что я получил, пройдя дополнительный --debug --stacktrace
Так для какого файла в доступе отказано и как это обнаружить?
21:50:18.828 [ERROR] [org.gradle.BuildExceptionReporter]
21:50:18.828 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter]
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] java.lang.ExceptionInInitializerError (no error message)
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter]
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] java.lang.ExceptionInInitializerError
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.internal.nativeplatform.filesystem.FileSystems.getDefault(FileSystems.java:22)
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.initialization.LayoutCommandLineConverter.convert(LayoutCommandLineConverter.java:39)
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.BuildActionsFactory.createAction(BuildActionsFactory.java:107)
21:50:18.844 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.createAction(CommandLineActionFactory.java:206)
21:50:18.859 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:196)
21:50:18.859 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.Main.doAction(Main.java:46)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.Main.main(Main.java:37)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.RuntimeException: java.io.IOException: Access denied
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.internal.nativeplatform.filesystem.GenericFileSystem.<init>(GenericFileSystem.java:88)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.internal.nativeplatform.filesystem.FileSystems$DefaultFileSystem.<clinit>(FileSystems.java:30)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] ... 16 more
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.io.IOException: Access denied
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.internal.nativeplatform.filesystem.GenericFileSystem.createFile(GenericFileSystem.java:99)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.internal.nativeplatform.filesystem.GenericFileSystem.<init>(GenericFileSystem.java:84)
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter] ... 17 more
21:50:18.860 [ERROR] [org.gradle.BuildExceptionReporter]
Eclipse запускается с JRE 1.7 на Win32
Gradle 1.10. Конечно, то же самое работает и из командной строки.
2 ответа
Чтобы выяснить это, нужно заглянуть в кодовую базу Gradle. IOException
бросается следующей строкой:
File file = File.createTempFile("gradle_fs_probing", null, null);
Очевидно, что процесс Java не может создать временный файл. Возможно, это проблема с правами доступа к файлу.
В моем случае та же проблема была вызвана не определением свойств среды по умолчанию (Среда была Eclipse & Windows). Затем в Gradle отсутствуют некоторые свойства, например, для временного каталога.
Так что это работает:
def myenv = [ "JAVA_HOME=./jdk" ]
def env = System.getenv().collect { k, v -> "$k=$v" } + myenv
def proc = "./gradlew".execute(env, new File('.'))
пока это может не сработать
def myenv = [ "JAVA_HOME=.\\jdk" ]
def proc = "./gradlew".execute(myenv, new File('.'))