Po wielu prób i błędów, to jest najlepsza metoda znalazłem do pakowania aplikacji Scala dla dystrybucji:
Najpierw należy utworzyć klasę Java, aby być głównym punktem wejścia do stosowania w sposób opisany przez Gary Boon . Dzięki temu można uruchomić aplikację z pliku JAR za pomocą komendy java. Okazało się, że działa klasę Scala za pomocą polecenia java jest problematyczne, nawet gdy masz bibliotekami Scala na ścieżce źródło:
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]));
}
}
Teraz można wykorzystać Export Runnable JAR polecenia Eclipse spakować wszystkie swoje zajęcia i biblioteki do pliku JAR. Ustaw główną klasę JAR na punkt wejścia Java. Można również zapisać ustawienia wyjściowe generowane przez Eclipse jako plik kompilacji ANT, aby można było wprowadzić poprawki. Użycie ANT do utworzenia pliku JAR z punktem wejścia Java przyniosło najlepsze rezultaty. Możesz także spakować inne zalewki JAR w ten sposób, co znacznie upraszcza próbę uruchomienia JAR na innym hoście. Jako minimum będziesz potrzebował biblioteki Scala i narzędzia JAR Scala.
<zipfileset excludes="META-INF/*.SF" src="${scala.lib.jar}"/>
<zipfileset excludes="META-INF/*.SF" src="${scala.tools.jar}"/>
Jeśli używasz osadzone Jetty, jak ja, można uruchomić serwer jako proces demona za pomocą następującego polecenia (source):
nohup java -jar MyJettyServer.jar </dev/null>> server.log 2>> server_error.log &
Ten program działa w tle proces, który jest niezależny od bieżącej sesji użytkownika, więc proces będzie kontynuowany po wylogowaniu z hosta.
Dzięki za wiadomość Thomas. Obawiam się, że jestem trochę początkującym, jeśli chodzi o narzędzia do budowania Java. Nie jestem pewien, czy plik WAR jest tym, czego chcę. Używam Jetty w trybie wbudowanym, więc miałem nadzieję spakować wszystko do działającego JAR-a lub czegoś podobnego. Czy mogę szczekać złe drzewo? – lach
WAR jest standardem (plik archiwum aplikacji sieci Web SRV.9 - http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html) sposób na spakowanie aplikacji dla kontenera serwletów (http: // wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications). –