2009-09-23 17 views
5

Mam problem z używaniem jarjar z wiersza poleceń do połączenia prostego programu Scala z biblioteką uruchomieniową scala.Jak korzystać z jarjar z wiersza poleceń?

jarjar poprawnie wykrywa zależność:

$ java -jar ~/Desktop/saug/jarjar-1.0.jar find jar BCT.jar scala-library.jar 
/home/schani/Work/scala/bct/BCT.jar -> /home/schani/Work/scala/bct/scala-library.jar 

Łącząc je nie działa, jednakże:

$ CLASSPATH=./scala-library.jar java -jar ~/Desktop/saug/jarjar-1.0.jar process rules.jjl BCT.jar BCTS.jar 

Plik jar że mogę nadal zależy scala-library.jar. To, czy dodaję zmienną CLASSPATH, nie ma znaczenia. Mój plik rules.jjl wygląda następująco:

keep BCT 

Co robić?

+1

To tylko sztuczka z umysłem jedi. Mam nadzieję, że to cię nie za bardzo ... –

Odpowiedz

1

Użycie opcji java -jar ignoruje ścieżkę klasy. Spróbuj określający główne klasy wyraźnie ze ścieżki klasy, a pomijają „-jar”:

java -cp ~/Desktop/saug/jarjar-1.0.jar:./scala-library.jar com.tonicsystems.jarjar.Main process rules.jjl BCT.jar BCTS.jar 
+0

To też nie działa. –

+0

Dla mnie bardziej szczegółowy tworzy słoik, który po prostu zawiera BCT.jar. Nie chcę zmieniać nazwy żadnego pakietu, ale zbierać wszystkie zależności. Więc w regułach mam jedną regułę keep z pakietem głównej klasy w moim BCT.jar – pihentagy

0

Spróbuj dodać zachować dla klasy scala.runtime.Nothing $. Stwierdziłem, że jest to konieczne podczas używania podobnego produktu (autojar; http://autojar.sourceforge.net/en_d/index.html) ze Scala.

+0

To też nie działa. wydaje się, że jarjar pobiera klasy tylko z pliku wejściowego określonego w wierszu poleceń, ale nie z żadnych zależnych słoików i nie ma sposobu na ich podanie. –

0

jarjar nie przepakowuje innych słoików do słoika. Zmienia tylko zależności wewnątrz samego słoika.

Użyj metody opisanej tutaj Clean way to combine multiple jars? Preferably using Ant, aby przywrócić wszystkie słoiki zależne do słoika, a następnie uruchom jarjar, aby zapobiec przyszłym piekło zależności.

+0

w rzeczywistości, po prostu rezipping przy użyciu zadania ant nie jest idealnym rozwiązaniem. Użyłem plugin eclipse fat-jar, aby to zrobić. w zasadzie, wykonaj pusty projekt i umieść wszystkie słoiki w ścieżce budowania projektu, a następnie użyj wtyczki fat-jar http://fjep.sourceforge.net/, aby wyeksportować do słoika. – yincrash

Powiązane problemy