IntelliJ IdeaがインストールされたMacOSがあります。プロジェクトをビルドするためにGradle(gradle-2.4)を使用しています。 NodeJSとNPMをMacにインストールし、シェルから入手できます。
MacBook:~ user$ node -v
v4.2.2
MacBook:~ user$ npm -v
2.14.7
NODE/NPMを使用するGradleタスクを実行すると、次のエラーで失敗します(現在の例ではNPMです)。
* What went wrong:
Execution failed for task ':module:task'.
> A problem occurred starting process 'command 'npm''
Gradleからのエラースタックトレースは次のとおりです。
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':module:task'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.Java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:42)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.Java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.Java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.Java:43)
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.Java:305)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.Java:79)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.Java:63)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.Java:51)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.Java:23)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.Java:88)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.Java:29)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:62)
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.Java:23)
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.Java:68)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.Java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:62)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.Java:55)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.Java:149)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.Java:106)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.Java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.Java:80)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.Java:43)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.Java:30)
at org.gradle.tooling.internal.provider.ConfiguringBuildAction.run(ConfiguringBuildAction.Java:119)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.Java:36)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.Java:26)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.Java:47)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.Java:35)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.Java:24)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.Java:33)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.Java:71)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.Java:69)
at org.gradle.util.Swapper.swap(Swapper.Java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.Java:69)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.Java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.Java:70)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.Java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.Java:39)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.Java:119)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.Java:46)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.Java:246)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.Java:64)
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'npm''
at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.Java:196)
at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.Java:325)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.Java:83)
... 1 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'npm'
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.Java:27)
at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.Java:36)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.Java:65)
... 1 more
Caused by: Java.io.IOException: Cannot run program "npm" (in directory "/<project path>"): error=2, No such file or directory
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.Java:25)
... 3 more
Caused by: Java.io.IOException: error=2, No such file or directory
... 4 more
だから、Gradleはプロジェクトの絶対ディレクトリでNPMを見つけようとしており、Mac PATH環境変数を使用していないようです。誰もこれを回避/回避する方法を知っていますか?チームが共有され、異なるOS(Linux、MacOS)を使用しているため、NODE/NPMに絶対パスを使用できません。何か案は? :)
実行してgradleデーモンを停止します
$ ./gradlew --stop
gradleコマンドを再実行して修正します。
私は同様の問題を抱えていましたが、私の場合、IntelliJから実行したとき、Gradleはパスにアクセスしてノード/ npmがどこにあるかを見つけることができませんでした。私はgradle-gulp-pluginを使用しており、ノードの自動ダウンロードを有効にして問題を解決しました。
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath('be.filipblondeel.gradle:gradle-gulp-plugin:0.1')
}
}
node {
// Version of node to use.
version = '0.12.0'
// Enabled the automatic download.
download = true
}
誰かに役立つかもしれません:
私の場合、問題は、Android Studioを実行していたことです。最初にそれを終了しなければならなかったので、すべて正常に動作しました。
私は同じ問題を抱えていて、コマンドを実行して解決しました:
gradle --stop
IntellijのGradleプラグインからnodeやnpmなどのコマンドを実行するGradleタスクを実行しようとすると、この同じ問題に遭遇しました。スタックトレースから、Gradleプラグインが外部システムコマンドを実行しようとしており、次のようなエラーが発生していることがわかります。
WARN - nal.AbstractExternalSystemTask - error=2, No such file or directory
com.intellij.openapi.externalSystem.model.ExternalSystemException: error=2, No such file or directory
at org.jetbrains.plugins.gradle.service.project.GradleExecutionHelper.execute(GradleExecutionHelper.Java:228)
パスから実行可能ファイル(つまり、ノード、npm)を削除すると、コマンドラインからこのエラーを再現できます。これにより、プラグインに関する何かが環境パスを尊重していないことがわかります。
私のGradleプラグインはプロジェクトgradlew(gradle wrapper version 2.3)を使用しているので、プラグインが私のシステム(バージョン2.10)に最近インストールされたGradleを指すようにしました。
次に、プロジェクトのgradleラッパーを再生成し、ラッパーを指すようにIntelliJ Gradleプラグインを設定して、問題を解決しました。
元の問題が何だったのかわかりません。
役に立つかもしれません:
Sudo launchctl config user path $ PATH
「有効にするには、マシンを再起動する必要があります」
答えは、これは取るに足らないことです。ソリューションは、すべてのアプリケーションに適用されます。
エラーの理由は、Mac OS Xのビジュアルアプリはいずれもユーザーシェルを使用しないため、~/.bash_profile
などのローカルプロファイル設定にあるものはすべて、Studioの起動時に取得されないためです。良い回避策があります:
cd /Applications/Android Studio.app/Contents/MacOS
studio_app
(または実行可能ファイル名)に移動しますmv $executable$ $executable$_app
$executable$
と呼び、次のように入力します。ここでは、bash_profile
を使用しています。#!/bin/sh
. ~/.bash_profile
logger "`dirname \"$0\"`/$executable$_app"
exec "`dirname \"$0\"`/$executable$_app" $@
chmod +x $executable$
それだけです。 Studioアプリを通常どおり再起動すると、ノードへのパスなど、bash_profile
からすべての設定が継承されます。
$executable$
をexeファイルの名前に置き換えます。 Android Studioの場合は、単なるスタジオになります。IntelliJの場合は、単にintellijになります(ダブルチェック)。