Próbuję zbudować projekt Scala za pomocą sbt , więc uruchamiam polecenie:
sbt clean test > log.log
Co oznacza, że wszelkie komunikaty, które narzędzie sbt zapisuje na konsoli Windows, powinny zostać zapisane w pliku „log.log”. Ale czasami dostaję stos śledzenia śledzenia do konsoli, a nie do pliku:
C:\path>sbt clean test > log.log
java.lang.ExceptionInInitializerError
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.ClassCastException: Class org.infinispan.configuration.parsing.Parser60 does not implement org.infinispan.configuration.parsing.ConfigurationParser
Dlaczego polecenie „>” nie przekierowuje wszystkich wiadomości do pliku?
źródło
2>&1
odpowiedzią a1<&2
linkiem? Zawsze widziałem to po swojemu, a drugi sposób również ma sens (przekierowanie „danych wejściowych” zamiast „danych wyjściowych”, ale poza tym wygląda tak samo), ale interesujący jest drugi wybór.2>&1
mówi, że wyjście z STDERR powinno zostać przekierowane do tego samego wyjścia, co STDOUT.1<&2
mówi, że dane wyjściowe z STDERR powinny być użyte jako dane wejściowe do STDOUT. Oba dają ten sam wynik i są po prostu kwestią preferencji2>&1
po> log.log
.