2013-08-09 24 views
26

Mam struktury folderówJak utworzyć plik jar ze strukturą pakietu?

/com/cdy/ws/a.class files 
/com/cdy/ws/b.class files 
/com/cdy/ws/c.class files 

Kiedy uruchomić następującą komendę „jar CVF asd.jar * .class” To daje słoik z wszystkich plików klasowych. Ale struktura folderów nie jest generowana. Wszystkie pliki klas muszą znajdować się w sekcji "com.cdy/ws", ale wszystkie klasy mają ten sam poziom META-INF. Czy ktoś może mi powiedzieć, jakie polecenie generuje strukturę pakietu?

Dzięki

Odpowiedz

55

Trzeba rozpocząć tworzenie JAR na korzenia plików.

Tak więc, na przykład:

jar cvf program.jar -C path/to/classes . 

który zakłada, że ​​path/to/classes zawiera katalog com.

FYI, w dzisiejszych czasach jest to stosunkowo rzadkie dla większości ludzi, aby użyć polecenia jar bezpośrednio, jak będą używać narzędzia zbudować taki jak Ant lub Maven dbać o to (i inne aspekty kompilacji). Warto poświęcić jeden z tych narzędzi, aby zająć się wszystkimi aspektami twojej kompilacji, a dzięki IDE łatwiej będzie napisać build.xml (Ant) lub pom.xml (Maven).

+13

Początkowo byłem zdezorientowany tą odpowiedzią. Uczynienie tego bardziej konkretnym może pomóc innym: Jeśli twoje pliki klas znajdują się w folderze1/folder2/folder3/com/przykład/test, a chcesz, aby struktura pakietu była com.example.test, polecenie powinno być: 'jar cvf program.jar -C folder1/folder2/folder3 .' (Okres jest częścią polecenia, oczywiście.) – hBrent

+0

@Adam Batkin Proszę pomóż mi zbudować słoik z tego kodu źródłowego https://github.com/upictec /org.json.me Próbowałem twoich instrukcji. Nawet zainstalowałem program maven, ale nadal nie mogę pobrać słoika: S – eddy

+0

@eddy Twój projekt tworzy JAR jako cel/json-1.0.jar - ale nie mogłem go uruchomić dopóki nie usunę całego ' 'tag para i wszystko wewnątrz nich –

9

Chcesz

$ jar cvf asd.jar . 

określić katalog (np .) do jar od. To pozwoli zachować strukturę folderów w pliku jar.

7

Z katalogu zawierającego folder com:

$ jar cvf asd.jar com 
added manifest 
adding: com/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/a.class(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/b.class(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/c.class(in = 0) (out= 0)(stored 0%) 

$ jar -tf asd.jar 
META-INF/ 
META-INF/MANIFEST.MF 
com/ 
com/cdy/ 
com/cdy/ws/ 
com/cdy/ws/a.class 
com/cdy/ws/b.class 
com/cdy/ws/c.class 
+1

Dzięki .. Mam strukturę pakietów po uruchomieniu powyższego polecenia :) – user2532663

+0

@Daniel proszę mógłbyś mi pomóc zbudować słoik z tym kodem sosie github.com/upictec/org.json.me Próbowałem twoich instrukcji. Nawet zainstalowałem maven, ale nadal nie mogę dostać słoika: S – eddy

2

ten kod poniżej dał mi poprawną odpowiedź

jar cvf MyJar.jar *.properties lib/*.jar -C bin . 

dodał plik (Log4J) właściwości, to dodaje pliki jar w lib. a następnie weszła do wnętrza bin, aby pobrać pliki klas z pakietem.

7

Krok 1: Przejdź do katalogu, w którym klasy są przechowywane przy użyciu wiersza polecenia (lub wiersza poleceń powłoki systemu Linux)
Podobnie jak w przypadku projektu.
C:/workspace/MyProj/bin/classess/com/test/*.class

Go bin katalogu poleceniem:

cd C:/workspace/MyProj/bin 

Krok 2: Za pomocą polecenia poniżej, aby wygenerować plik jar.

jar cvf helloworld.jar com\test\hello\Hello.class com\test\orld\HelloWorld.class 

Za pomocą powyższego polecenia klasy zostaną umieszczone w słoiku w strukturze katalogów.

2

Określona nazwa folderu musi być na C:\Program Files\Java\jdk1.7.0_02\bin ścieżce Nazwa foldera z plikami klas.

C:\Program Files\Java\jdk1.7.0_02\bin>jar cvf program1.jar Foldername 

Teraz program1.jar utworzy w katalogu C: \ Program Files \ Java \ jdk1.7.0_02 \ ścieżka bin

0

po prostu więcej niż powyżej -

  1. Miej zawartość opakowania Java wewnątrz katalogu i upewnij się, że nie ma w nim nic poza pakietami Java i odpowiadającymi im klasami Java.

  2. Otwórz Command (Jeśli system Windows) Prompt, dotrzeć do zawierającego ścieżkę katalogu jak poniżej -

    C:>cd "C: \ Users \ UserABC \ Downloads \ Current Folder"

    C : \ Users \ UserABC \ Downloads \ Current Folder>jar cvf hello-world-1.0.1.jar .

0

aby uniknąć dodawania plików źródła .java do pakietu należy zrobić

cd src/ 
jar cvf mylib.jar com/**/*.class 

przypuszczać, że twoja struktura projektu było jak

myproject/ 
    src/ 
     com/ 
     mycompany/ 
      mainClass.java 
      mainClass.class 
Powiązane problemy