2012-06-18 7 views
7

Powiel możliwe:
How to determine which classes are used by a Java program?Export klasy runnable Java .jar tym tylko wymaganymi zależnościami

Mam projektu Java Eclipse, który zawiera wiele klas Javy. Chcę wyeksportować jedną z nich do pliku .jar, ale wystąpiły problemy.

ja już przeczytać niektórych istniejących wątków, ale nie dostać właściwą odpowiedź na moje wymagania, ponieważ:

Jeśli wybiorę „Eksport do pliku JAR” I uzyskać właściwą klasę eksportowany, ale. plik jar nie zawiera wymaganych zależności do uruchomienia pliku jar.

Jeśli wybiorę opcję "Eksportuj do działającego pliku JAR", wynikowy plik JAR zawiera wszystkie zależności, ale także wszystkie inne klasy z całego projektu (także te, których nie potrzebuję).

W jaki sposób mogę wyeksportować pojedynczą klasę Java do pliku .jar, który zawiera również wymagane biblioteki do uruchamiania pliku jar? Wynikowy plik jar musi być tak mały, jak to tylko możliwe.

Wielkie dzięki.

+0

Are używasz maven? Zamówienie [wtyczka do montażu] (http://maven.apache.org/plugins/maven-assembly-plugin/) –

+0

Mam to samo pytanie - napisałem prosty program i wszystkie rzeczy wspólne, waży ponad 3Meg. ! Jestem pewien, że gdybym mógł zbudować słoik z klasami, których potrzebuje, byłby mały. –

Odpowiedz

1

Można utworzyć nowy projekt zawierający tylko klasę, która jest w nim potrzebna i wyeksportować ten projekt jako działający jar.

+0

To jest rozwiązanie dla tylko jednego pliku, ale potem muszę utworzyć nowy projekt za każdym razem, gdy muszę wyeksportować pojedynczą klasę. W dużym projekcie, który może oznaczać dużo pracy. Nawet gdy potrzebuję tylko jednej klasy, ale ta klasa potrzebuje innych zajęć poza projektem, muszę poszukać każdej klasy i przenieść ją do nowego projektu. Dlaczego nie ma automatycznej możliwości, aby eksportowane aplikacje były niewielkie? – fachexot

0

Może istnieć obejście problemu, w zależności od przypadku użycia, dla którego jest to potrzebne. Zasadniczo pełna analiza zależności nie będzie możliwa, ponieważ kod może ładować klasy w czasie wykonywania itd. Jeśli potrzebujesz .jars być tak mały, jak to możliwe (np. Jeśli chcesz mieć możliwość "klickstart" części aplikacji i nie należy niepotrzebnie marnować miejsca na przechowywanie), można wtedy użyć pojedynczej kopii zewnętrznych bibliotek dla wszystkich słoików, a następnie przechowywać tylko jedną kopię bibliotek zewnętrznych. Proszę podać więcej informacji na temat tego, co twój use-case jest tak, że możemy pisać bardziej konkretne odpowiedzi :)

+0

Przypadek użycia jest prosty. Mam jeden projekt, który składa się z wielu frameworków (biblioteki zewnętrzne, pliki źródłowe itp.) I wielu plików klas (niektóre z nich z główną metodą). Teraz chcę wyeksportować każdą z klas przy użyciu metody głównej w pliku JAR z możliwością działania. Następnie chcę policzyć rozmiar różnych słoików. Jeśli używam Eksportu jako działającego pliku Jar, Eclipse umieszcza WSZYSTKIE klasy całego projektu w tym pliku JAR. Jeśli użyję tylko Export Jar, wyeksportowany jar nie będzie zawierać wymaganych bibliotek itp. Wiem, że projekt jest trochę chaotyczny, ale nie zaimplementowałem go, po prostu chcę go przeanalizować. – fachexot

0

spróbować, jest to sposób, aby utworzyć lub słoik runnable słoik w Eclipse

File -> Export-> Java ->Runnbale JAR file 

Launch configuration : your Class containing the public static void main(String[] args) 

Export destination : Target place 

Library Handling: 

Package required libraries into generated JAR 

FINISH 
+0

W ten sposób robię to już. Niestety nie rozwiązuje to mojego problemu, ponieważ działający jar zawiera wszystkie pliki całego projektu Eclipse. – fachexot

+0

@fachexot Ten sam problem tutaj ... nadal nie ma rozwiązania? – momomo

Powiązane problemy