spectral-intellij-plugin
spectral-intellij-plugin copied to clipboard
Cannot run program "spectral"
I'm using spectral plugin version 3.0.1 and Intellij 2023.3.5 in Windows, but get the below error :
com.intellij.execution.process.ProcessNotCreatedException: Cannot run program "spectral" (in directory "H:\my-folder\poc\my-project"): CreateProcess error=2, The system cannot find the file specified
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:356)
at com.schwarzit.spectralIntellijPlugin.CommandLineExecutor.execute(CommandLineExecutor.kt:17)
at com.schwarzit.spectralIntellijPlugin.SpectralRunner.execute(SpectralRunner.kt:56)
at com.schwarzit.spectralIntellijPlugin.SpectralRunner.run(SpectralRunner.kt:41)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.lintFile(SpectralExternalAnnotator.kt:103)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate$lambda$1(SpectralExternalAnnotator.kt:81)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:71)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:71)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate(SpectralExternalAnnotator.kt:90)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate(SpectralExternalAnnotator.kt:23)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:207)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:201)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$0(ExternalToolPass.java:164)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.runChangeAware(ExternalToolPass.java:266)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$2(ExternalToolPass.java:164)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:360)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:162)
at com.intellij.util.ui.update.Update.runUpdate(Update.java:114)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:348)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:338)
at com.intellij.util.ui.update.MergingUpdateQueue.doFlush(MergingUpdateQueue.java:295)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:277)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:246)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:254)
at com.intellij.util.Alarm$Request.runSafely(Alarm.java:373)
at com.intellij.util.Alarm$Request.run(Alarm.java:360)
at com.intellij.util.concurrency.Propagation.contextAwareCallable$lambda$2(propagation.kt:328)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:249)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:227)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:215)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.io.IOException: Cannot run program "spectral" (in directory "H:\my-folder\poc\my-project"): CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
at com.intellij.execution.configurations.GeneralCommandLine.startProcess(GeneralCommandLine.java:432)
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:346)
... 54 more
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessImpl.create(Native Method)
at java.base/java.lang.ProcessImpl.
try this configuration /H/my-folder/...
This error is happening because the spectral cli needs to be installed and available on path.
On Mac I fixed this by
npm install -g @stoplight/spectral-cli
Same problem after :
npm install -g @stoplight/spectral-cli
I can run spectral in terminal intelliJ plugin don't work :
OS : AlmaLinux release 8.7 IntelliJ 2024.1.1 Ultimate Plugin version : 3.0.1 spectral version : 6.11.1
com.intellij.execution.process.ProcessNotCreatedException: Cannot run program "spectral" (in directory "/home/user/repos/aai-model"): error=2, No such file or directory
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:367)
at com.schwarzit.spectralIntellijPlugin.CommandLineExecutor.execute(CommandLineExecutor.kt:17)
at com.schwarzit.spectralIntellijPlugin.SpectralRunner.execute(SpectralRunner.kt:56)
at com.schwarzit.spectralIntellijPlugin.SpectralRunner.run(SpectralRunner.kt:41)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.lintFile(SpectralExternalAnnotator.kt:103)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate$lambda$1(SpectralExternalAnnotator.kt:81)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:100)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:221)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:46)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:220)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:100)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate(SpectralExternalAnnotator.kt:90)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate(SpectralExternalAnnotator.kt:23)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.lambda$doAnnotate$1(ExternalToolPass.java:208)
at com.intellij.codeInsight.daemon.impl.AnnotationSessionImpl.computeWithSession(AnnotationSessionImpl.java:80)
at com.intellij.codeInsight.daemon.impl.AnnotationSessionImpl.computeWithSession(AnnotationSessionImpl.java:72)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:206)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:200)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$0(ExternalToolPass.java:163)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.runChangeAware(ExternalToolPass.java:268)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$2(ExternalToolPass.java:163)
at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$runUnderDisposeAwareIndicator$15(BackgroundTaskUtil.java:371)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:217)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:366)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:161)
at com.intellij.util.ui.update.ContextAwareUpdate.run$lambda$1$lambda$0(ContextAwareUpdate.kt:49)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:86)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:81)
at com.intellij.util.ui.update.ContextAwareUpdate.run(ContextAwareUpdate.kt:48)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:354)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:344)
at com.intellij.util.ui.update.MergingUpdateQueue.doFlush(MergingUpdateQueue.java:301)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:283)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:250)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:81)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:86)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:81)
at com.intellij.util.Alarm$Request.lambda$runSafely$0(Alarm.java:369)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:253)
at com.intellij.util.Alarm$Request.runSafely(Alarm.java:369)
at com.intellij.util.Alarm$Request.run(Alarm.java:356)
at com.intellij.util.concurrency.Propagation.contextAwareCallable$lambda$2(propagation.kt:357)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:244)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:222)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:210)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.io.IOException: Cannot run program "spectral" (in directory "/home/user/repos/aai-model"): error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:491)
at com.intellij.execution.configurations.GeneralCommandLine.startProcess(GeneralCommandLine.java:464)
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:357)
... 70 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.
Same problem here.
OS: Ubuntu 23 IDE: IntelliJ 2024.2.4 Plugin version: 3.0.1 spectral-cli: 6.13.1
Stacktrace:
com.intellij.execution.process.ProcessNotCreatedException: Cannot run program "spectral" (in directory "/home/mikolaj/work/"): error=2, No such file or directory
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:384)
at com.schwarzit.spectralIntellijPlugin.CommandLineExecutor.execute(CommandLineExecutor.kt:17)
at com.schwarzit.spectralIntellijPlugin.SpectralRunner.execute(SpectralRunner.kt:56)
at com.schwarzit.spectralIntellijPlugin.SpectralRunner.run(SpectralRunner.kt:41)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.lintFile(SpectralExternalAnnotator.kt:103)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate$lambda$1(SpectralExternalAnnotator.kt:81)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:98)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:221)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:49)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:220)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:98)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate(SpectralExternalAnnotator.kt:90)
at com.schwarzit.spectralIntellijPlugin.SpectralExternalAnnotator.doAnnotate(SpectralExternalAnnotator.kt:23)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.lambda$doAnnotate$1(ExternalToolPass.java:220)
at com.intellij.codeInsight.daemon.impl.AnnotationSessionImpl.computeWithSession(AnnotationSessionImpl.java:87)
at com.intellij.codeInsight.daemon.impl.AnnotationSessionImpl.computeWithSession(AnnotationSessionImpl.java:79)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:218)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.doAnnotate(ExternalToolPass.java:212)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$0(ExternalToolPass.java:170)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass.runChangeAware(ExternalToolPass.java:283)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.lambda$run$2(ExternalToolPass.java:170)
at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$runUnderDisposeAwareIndicator$15(BackgroundTaskUtil.java:371)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:217)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:366)
at com.intellij.codeInsight.daemon.impl.ExternalToolPass$1.run(ExternalToolPass.java:168)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:366)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:356)
at com.intellij.util.ui.update.MergingUpdateQueue.doFlush(MergingUpdateQueue.java:313)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:295)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:262)
at com.intellij.util.Alarm$Request.lambda$runSafely$0(Alarm.java:371)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:92)
at com.intellij.util.concurrency.ChildContext$runAsCoroutine$1.invoke(propagation.kt:92)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:97)
at com.intellij.util.concurrency.ChildContext.runAsCoroutine(propagation.kt:92)
at com.intellij.util.Alarm$Request.lambda$runSafely$1(Alarm.java:369)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:255)
at com.intellij.util.Alarm$Request.runSafely(Alarm.java:368)
at com.intellij.util.Alarm$Request.run(Alarm.java:356)
at com.intellij.util.concurrency.Propagation.contextAwareCallable$lambda$2(propagation.kt:383)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:249)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:30)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:227)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:218)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:212)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:735)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:732)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:732)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.io.IOException: Cannot run program "spectral" (in directory "/home/mikolaj/work"): error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:463)
at com.intellij.execution.configurations.GeneralCommandLine.startProcess(GeneralCommandLine.java:469)
at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:374)
... 65 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.
On windows, you can't simply "create process", taking the cmd script name as an input (and spectral.cmd is really a cmd script).
The proper solution is likely to be #126, but as an interim fix, I've assembled the native binary from the program below using GraalVM compiler, and dropped it as spectral.exe into NodeJS installation directory.
import java.util.Arrays;
import java.util.stream.Stream;
public class SpectralBinaryRunner {
public static void main(String... args) {
var fullArgs = Stream.concat(
Stream.of("cmd", "/C", "spectral.cmd"),
Arrays.stream(args)
).toList();
try {
var process = new ProcessBuilder(fullArgs).inheritIO().start();
var exitCode = process.waitFor();
System.exit(exitCode);
} catch (Exception e) {
e.printStackTrace(System.err);
System.exit(-1);
}
}
}
Compilation:
javac SpectralBinaryRunner.java
native-image.cmd SpectralBinaryRunner
I'm partially retracting my comment above.
Actually there is a proper Windows binary for spectral which is in fact a standalone executable which includes pre-packaged nodejs and all stuff, but obviously it's not installed when you do npm install -g @stoplight/spectral-core.
So in order to overcome the original error:
com.intellij.execution.process.ProcessNotCreatedException: Cannot run program "spectral" (in directory "H:\my-folder\poc\my-project"): CreateProcess error=2, The system cannot find the file specified
You get to put that windows spectral binary on a PATH and not use the globally installed @stoplight/spectral-core package.
If you for some reason need / want to stick to npm package usage, then assembling the binary as described above here should also do the trick.
Closing this as installing the spectral executable as a proper binary should resolve the issue without affecting existing users who were already doing so. If there are still issues related to this, feel free to comment them here so the issue can be re-opened if neccessary.