다중 모듈 응용 프로그램을 만들고 다른 모듈과 별도로 (다른 컴퓨터에서) 모듈 중 하나를 실행하려고합니다. 프로젝트 구조는 다음과 같습니다재생 프레임 워크 : 다중 모듈 응용 프로그램의 별도 모듈 실행
main
/ \
module1 module2
내가 별도의 jar 파일로 모듈 1을 실행하려면 (? 또는이 일을 더 나은 방법이) 내가 다른 컴퓨터에서 실행되는가, (내가 연결할 Akka 리모팅을 사용하는 메인 앱으로).
내가 뭘하는지:
- 는 빈/모듈 1 실행 파일에 보편적 폴더에서
- 설정 + X 모드를 명령
- 압축 풀기 module1.zip "DIST을 플레이"실행.
- (아래에 붙여 넣) 내 주요 클래스를 설정 : 외부 application.conf 파일을 실행
declare -r app_mainclass="module1.foo.Launcher"
- : 대신
play.core.server.NettyServer
메신저 내 주요 클래스를 넣어. 이 main 메소드의 마지막 줄에수록이@pavel bin$ ./module1 -Dconfig.file=/Users/pavel/projects/foobar/conf/application.conf [WARN] [10/18/2013 18:56:03.036] [main] [EventStream(akka://testsystem)] [akka.event-handlers] config is deprecated, use [akka.loggers] akka://testsystem/user/listener Server ready Received msg: hi! @pavel bin$
그래서 시스템이 즉시 꺼집니다 : 여기
콘솔 출력 : 여기에class LauncherActor extends Actor { def receive = { case a => println(s"Received msg: $a ") } } object Launcher extends App { val system = ActorSystem("testsystem") val listener = system.actorOf(Props[LauncherActor], name = "listener") println(listener.path) listener ! "hi!" println("Server ready") }
내 주요 클래스 . Play없이이 코드를 실행하면 예상대로 작동하고, 개체가로드되고 예상되는 동작 인 메시지를 기다립니다.
어쩌면 내가 뭔가 잘못하고있는 것일까 요? 아니면 module1 실행 파일에 몇 가지 옵션을 설정해야합니까? 다른 아이디어?
미리 감사드립니다.
업데이트 : 버전 :
- 스칼라 - 2.10.3
- 플레이! - 2.2.0
- SBT - 0.13.0
- Akka - 2.2.1
- 자바 1.7과 1.6 (시도 모두)
빌드 속성 : 그래서 내가 찾은
lazy val projectSettings = buildSettings ++ play.Project.playScalaSettings ++ Seq(resolvers := buildResolvers,
libraryDependencies ++= dependencies) ++ Seq(scalacOptions += "-language:postfixOps",
javaOptions in run ++= Seq(
"-XX:MaxPermSize=1024m",
"-Xmx4048m"
),
Keys.fork in run := true)
lazy val common = play.Project("common", buildVersion, dependencies, path = file("modules/common"))
lazy val root = play.Project(appName, buildVersion, settings = projectSettings).settings(
resolvers ++= buildResolvers
).dependsOn(common, module1, module2).aggregate(common, module1, module2)
lazy val module1 = play.Project("module1", buildVersion, path = file("modules/module1")).dependsOn(common).aggregate(common)
lazy val module2: Project = play.Project("module2", buildVersion, path = file("modules/module2")).dependsOn(common).aggregate(common)
SBT 설정을 제공 할 수 있습니까?Play/Scala/SBT/JDK 버전과 모든 프로젝트가 Play 프로젝트인지는 알지 못합니다. 나는 당신의 오류를 재현하는데 매우 시간이 걸린다 고 생각한다. – Schleichardt
게시물을 업데이트했습니다. 실제로, 나는 누군가가 그 문제를 재현하려고 시도 할 것이라고 기대하지는 않지만 정말로 도움이 될 것입니다. 내가 틀린 일을하고 있거나 시스템간에 애플리케이션을 어떻게 분할했는지에 대한 전체 아이디어가 잘못되어 다른 방법으로해야한다고 생각했다. 누군가 이미 비슷한 문제에 직면하고 그런 일을 더 잘한다는 생각이 들었습니다. :) – psisoyev