이 내가 배포 스칼라 응용 프로그램을 포장에 대한 발견하는 가장 좋은 방법입니다 :
첫째, Gary Boon에 의해 설명 된대로 응용 프로그램의 주 진입 점으로 자바 클래스를 생성 . 이렇게하면 java 명령을 사용하여 JAR에서 응용 프로그램을 실행할 수 있습니다.
import java.util.ArrayList;
import scala.tools.nsc.MainGenericRunner;
public class Main {
public static void main (String[] args) {
ArrayList<String> argList = new ArrayList<String>();
argList.add("fully.qualified.ClassName");
for (String s : args) {
argList.add(s);
}
MainGenericRunner.main(argList.toArray(new String[0]));
}
}
지금 당신의 모든 클래스를 패키지로 이클립스의 수출의 Runnable JAR 명령을 사용할 수 있습니다 : 나는 자바 명령으로 스칼라 클래스를 실행하는 원본 경로에 스칼라 라이브러리를 설치하는 경우에도, 문제가 발견 라이브러리를 JAR 파일에 저장합니다. JAR의 메인 클래스를 Java 진입 점으로 설정하십시오. Eclipse에서 생성 한 출력 설정을 ANT 빌드 파일로 저장하여 조정할 수도 있습니다. ANT를 사용하여 Java 진입 점이있는 JAR을 생성하면 최상의 결과를 얻을 수 있습니다. 이런 방식으로 다른 JAR 의존성을 패키지화 할 수 있기 때문에 다른 호스트에서 JAR을 실행할 때 훨씬 간단 해집니다. 최소한 Scala 라이브러리와 Scala 도구 JAR이 필요합니다. 이것은 배경으로 프로그램을 실행
nohup java -jar MyJettyServer.jar </dev/null>> server.log 2>> server_error.log &
: 당신은 내가, 당신은 다음 명령 (source)를 사용하여 데몬 프로세스로 서버를 실행할 수 있습니다, 부두를 내장 사용하는 경우
<zipfileset excludes="META-INF/*.SF" src="${scala.lib.jar}"/>
<zipfileset excludes="META-INF/*.SF" src="${scala.tools.jar}"/>
프로세스는 현재 사용자 세션과 독립적이므로 호스트를 로그 아웃 한 후에 프로세스가 계속됩니다.
토마스에게 감사드립니다. Java 빌드 도구에 관해서는 약간 신참 스럽습니다. WAR 파일이 원하는 것인지 확실하지 않습니다. 나는 임베디드 모드에서 Jetty를 실행 중이므로 모든 것을 실행 가능한 JAR 또는 기타 패키지로 패키징하기를 원했습니다. 아니면 잘못된 나무를 짖고 있습니까? – lach
WAR은 서블릿 컨테이너 (http : //) 용으로 애플리케이션을 패키징하는 표준 (SRV.9.6 웹 애플리케이션 아카이브 파일 - http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html)입니다. Wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications). –