2014-04-02 9 views
16

Próbuję uruchomić jeden z bezpiecznych projektów typu aktywator w IntelliJ 13.1 z najnowszymi wtyczkami Play 2 i Scala.Play 2.2.2 z IntelliJ 13 i SBT 0.13 cant run - Nie wykryto głównej klasy

Mogę uruchomić projekt za pomocą aktywatora bez problemów, ale kiedy próbuję otworzyć projekt aktywatora za pomocą pliku build.sbt w IntelliJ, wszystko wydaje się działać, dopóki nie spróbuję uruchomić tego programu za pomocą konfiguracji uruchamiania aplikacji 2 Play App . Otrzymuję następujący błąd;

"C:\Program Files\Java\jdk1.8.0\bin\java" -Dfile.encoding=UTF8 -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\Users\nw\AppData\Local\Temp\sbt-global-plugin5970836074908902993stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\Users\nw\.IntelliJIdea13\config\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot run 
    Getting org.fusesource.jansi jansi 1.11 ... 
    :: retrieving :: org.scala-sbt#boot-jansi 
     confs: [default] 
     1 artifacts copied, 0 already retrieved (111kB/37ms) 
    Getting org.scala-sbt sbt 0.13.0 ... 
    :: retrieving :: org.scala-sbt#boot-app 
     confs: [default] 
     43 artifacts copied, 0 already retrieved (12440kB/109ms) 
    Getting Scala 2.10.2 (for sbt)... 
    :: retrieving :: org.scala-sbt#boot-scala 
     confs: [default] 
     5 artifacts copied, 0 already retrieved (24390kB/62ms) 
    [info] Set current project to modules (in build file:/J:/DEV/TYPESAFE/reactive-maps/.idea/modules/) 
    java.lang.RuntimeException: No main class detected. 
     at scala.sys.package$.error(package.scala:27) 
    [trace] Stack trace suppressed: run 'last compile:run' for the full output. 
    [error] (compile:run) No main class detected. 
    [error] Total time: 0 s, completed 02/04/2014 10:31:12 PM 
    Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0 

    Process finished with exit code 1 

Moja build.sbt wygląda następująco;

name := """reactive-maps""" 

version := "1.0-SNAPSHOT" 

libraryDependencies ++= Seq(
    "com.typesafe.akka" %% "akka-actor" % "2.2.1", 
    "com.typesafe.akka" %% "akka-contrib" % "2.2.1", 
    "com.typesafe.play.extras" %% "play-geojson" % "1.0.0", 
    "org.webjars" %% "webjars-play" % "2.2.1", 
    "org.webjars" % "bootstrap" % "3.0.0", 
    "org.webjars" % "knockout" % "2.3.0", 
    "org.webjars" % "requirejs" % "2.1.8", 
    "org.webjars" % "leaflet" % "0.7.2" 
) 

play.Project.playScalaSettings 

Po uruchomieniu sbt run z wiersza poleceń w folderze projektu działa dobrze. Jest więc pewien problem ze sposobem importowania projektu SBT.

+0

Może zajrzeć do kroku 3 zaakceptowanej odpowiedzi na http://stackoverflow.com/questions/16135716/how-to-use-intellij-with-play-framework-and-scala – Exupery

+0

. spójrz na [this] (http://stackoverflow.com/questions/22702175/creating-sbt-project-in-intellij-ultimate-13-1-1-with-scala-plugin-gives-no-new). –

Odpowiedz

10

Właśnie wpadł na ten sam problem - mój projekt jest skonfigurowany tak:

root/ 
    .idea/ 
    MainApp/ <-- this one is a Play 2.2.2 project 
    .idea/ 
    apps/ <-- contains other Play2 projects 

I próbował uruchomić projekt MainApp i miał ten sam problem.

Jeśli zauważysz w biegu błędu: [info] Set current project to modules (in build file:/J:/DEV/TYPESAFE/reactive-maps/.idea/modules/)

Stwierdza jest ustawienie projektu modules. Chcesz to być reactive-maps.

Kopalnia zrobiła to samo - moje szybkie rozwiązanie:

- Znajdź plik .idea/modules/reactive-maps.iml, przenieść go do głównego poziomu reactive-maps/ katalogów.

- Otwórz plik, Ctrl-FCtrl-R (znajdź i zamień)

- Znajdź: $MODULE_DIR$/../.. Replace with: $MODULE_DIR$/

Uruchamianie aplikacji PLAY2 ponownie pracował w tym momencie.

Idealnym rozwiązaniem byłoby zaimportowanie go poprawnie (i jestem pewien, że jest sposób na zrobienie tego), ale to sprawiło, że moja aplikacja przeszła szybko przez IntelliJ (chociaż prawdopodobnie nastąpi przerwa w ponownym uruchomieniu/odświeżeniu SBT).

+0

To działało również dla mnie. Dobre znalezisko i dzięki za udostępnienie.! – eSniff

+0

Z tego co zauważyłem, dzieje się, gdy importuję projekt z istniejącego modułu/źródeł (np. Importowanie projektu jako istniejącego modułu SBT). Tworzenie nowego projektu od zera zawsze wydaje się działać – Snnappie

+0

:) Tak to zrobiłem. – eSniff

17

Można również użyć luz naprawić to

cd /path/to/project 
play 
[project] idea with-sources=yes 

I teraz można kliknąć prawym przyciskiem myszy na aplikacji i uruchomić aplikację PLAY2.

+0

To działało dla mnie i wygląda na znacznie czystsze rozwiązanie. Dzięki. – mindreader

+4

To powinna być zaakceptowana odpowiedź. Dzięki za podpowiedź –

+2

To działało dla mnie, ale zamiast 'play' użyłem' sbt' (ponieważ polecenie odtwarzania jest dla starszych wersji gry) – JoseM

Powiązane problemy