2014-10-27 10 views
10

Dlaczego te dwa polecenia zachowują się inaczej?Aktywator: Zagraj w Framework 2.3.x: uruchom kontra start

Rozpoczęcie Odtwarzanie w trybie produkcji i uruchamianie trybu deweloperskiego jest inne?

activator run -Dconfig.file=/myConfig.conf # works 
activator "run -Dconfig.file=/myConfig.conf" # works 

activator "start -Dconfig.file=/myConfig.conf" # Works 
activator start -Dconfig.file=/myConfig.conf # Doesn't, config file not found 
+0

Czy te polecenia używają różnych katalogów głównych? Biorąc pod uwagę, że jedna z nich rekompiluje wszystko, jeśli kod źródłowy się zmienia, a inny nie. – Ashalynd

+0

Jeśli to była przyczyna, to czy trzecie polecenie również nie może się powieść? –

Odpowiedz

21

Podstawową różnicą między tymi dwoma poleceniami jest to, co się tu dzieje. activator uruchamia maszynę JVM, a następnie wykonuje polecenie podane w wierszu poleceń. Różnica między run i start jest wprowadzeniem kolejnej maszyny JVM. Komenda start uruchamia twój program w nowym JVM, podczas gdy run nie. Tak więc, dla czterech przypadkach:

activator run -Dconfig.file=/myConfig.conf # works 

-D argumentem będzie JVM aktywatora, który następnie wykonuje run. Działa, ponieważ uruchomienie używa tej samej maszyny JVM, co aktywator.

activator "run -Dconfig.file=/myConfig.conf" # works 

JVM aktywatora dostaje żadnego -D ale interpretuje „run -Dconfig.file =/myConfig.conf” i ustawia właściwość config.file odpowiednio, również w JVM aktywator za.

activator "start -Dconfig.file=/myConfig.conf" # Works 

Aktywator rozpoczyna nowy JVM i przekazuje -D opcję na niej, jak również rozpoczęciem programu, tak to działa, ponieważ program robi właściwość config.file.

activator start -Dconfig.file=/myConfig.conf # Doesn't work, config file not found 

JVM aktywator za otrzyma opcję -D a następnie wykonuje polecenie start tworząc nową JVM, który nie otrzyma opcję -D tak to się nie powiedzie.

Powiązane problemy