Jak utworzyć JAR z pliku .java?

87

Pisałem prosty program przy użyciu aplikacji Java (nie aplikacji, która ma projekty, ale aplikacja w projekcie; .java ), która ma pojedynczą ramkę. Oba pliki to .java, więc nie mogę napisać manifestu wymaganego przez JAR.

MyApp.java zaczyna się jak klasy z pakietu import klasę następnie publiczną MyAppi ma główną rolę, ale to wciąż .java plik! Piszę to w JDeveloper 11g, jeśli to pomaga.

Jakieś pomysły, jak zrobić JAR z tych plików?

user1303007
źródło
1
Myślę, że można to osiągnąć znacznie łatwiej, używając narzędzi do pakowania, takich jak ANT lub Maven
Churk
Zgadzam się z Chuckiem. Spójrz na ANT. IDE świetnie nadają się do programowania, ale musisz zrozumieć, jak to działa. Pliki java są kompilowane przez javac do plików .class, po czym pliki .class można spakować do jar za pomocą polecenia jar. (Ant ma zadania do zrobienia tego, nawet jdeveloper ma do tego kreatora).
BigMike,
Sam JDeveloper powinien mieć możliwość tworzenia plików jar. Szybkie wyszukiwanie w Google zawiera poradnik
stolzem
1
Czy możesz wyjaśnić swoje pytanie?
Romain Hippeau
Przejdź do katalogu źródłowego i polecenia uruchomienia: - javac * .java && słoik cvf JarName.jar * .class
krzykliwy

Odpowiedzi:

102

Otwórz wiersz polecenia.

Przejdź do katalogu, w którym masz pliki .java

Utwórz kompilację katalogu

Uruchom kompilację java z wiersza poleceń

javac -d ./build *.java

jeśli nie ma błędów, w katalogu budowania powinieneś mieć swoje drzewo klas

przejdź do katalogu kompilacji i wykonaj plik

jar cvf YourJar.jar *

Do dodawania przełączników wiersza poleceń manifestu check jar

BigMike
źródło
Próbowałem kompilować z wiersza poleceń, ale pojawia się błąd: Frame1.java:23: pakiet oracle.jdeveloper.layout nie istnieje. Jak rozwiązać ten problem? Przepraszamy za pytania dla początkujących ...
user1303007
musisz zbudować ścieżkę klas odnoszącą się do wszystkich bibliotek, do których odwołujesz się w swoich klasach. Sprawdź w swojej instalacji jdevelopera, powinien być tam przykład kompilacji mrówek (plik build.xml) i przynajmniej kilka dobrych tutoriali na temat korzystania z jDevelopera z ANT na stronie Oracle.
BigMike,
@ user1303007 zajrzyj tutaj oracle.com/technetwork/articles/adf/part4-098813.html
BigMike
1
Dodałem opcję do mojego polecenia jar, aby automatycznie dodać klasę główną do manifestu ... jar cfe Main.jar Main *(jestem jednak zdezorientowany, musiałem umieścić nazwę klasy głównej po nazwie pliku wyjściowego).
Hydroper
31

Po prostu za pomocą wiersza poleceń:

javac MyApp.java
jar -cf myJar.jar MyApp.class

Z pewnością IDE unikają używania terminala wiersza poleceń

ab_dev86
źródło
11
Powyższe zadziałało, jednak musiałem określić .classplik myApp. Tak byłojar -cf myJar.jar myApp.class
Navigatron
3
Tutaj również błędy ortograficzne i zakłada, że ​​nie ma instrukcji dotyczących pakietu. Nie wystarczające.
Markiz Lorne,
14

Ok, to jest rozwiązanie, które chciałbym znaleźć, zamiast tego tutaj je piszę:

Najpierw utwórz strukturę katalogów odpowiadającą pakietowi zdefiniowanemu dla pliku .java, jeśli jest to moja.super.application utwórz katalog „my”, w nim „super”, aw nim plik .java „App.java”

następnie z linii poleceń:

   javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java

Zauważ, że powyższe będzie zawierało wiele bibliotek, jeśli w systemie Windows użyj "," do oddzielenia wielu plików, w przeciwnym razie w GNU / Linux użyj ":" Aby utworzyć plik jar

   jar -cvfe App.jar App my/app/

powyższe spowoduje utworzenie aplikacji z odpowiednim Manifestem wskazującym aplikację jako główną klasę.

Włączenie wymaganych bibliotek do pliku jar nie jest możliwe przy użyciu parametrów wiersza poleceń java lub jar.

Zamiast tego możesz:

  1. ręcznie wyodrębnij biblioteki do folderu głównego pliku jar
  2. użyj środowiska IDE, takiego jak Netbeans, i wstaw regułę do sekcji post-jar pliku nbproject / build-impl.xml, aby wyodrębnić biblioteki z słoika. Zobacz poniżej.
<target name="-post-jar">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
  <jar jarfile="${dist.jar}" update="true">  
            <zipfileset src="${dist.jar}" includes="**/*.class" />  
            <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
      <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
  </jar>
    </target>

nazwy file.reference znajdują się w pliku project.properties po dodaniu bibliotek do środowiska Netbeans IDE.

sarah.ferguson
źródło
9

Często będziesz chciał określić manifest, na przykład:

jar -cvfm myJar.jar myManifest.txt myApp.class

Który brzmi: „utwórz pełny plik jarFilename manifestFilename”, a następnie pliki, które chcesz dołączyć. Pełne oznacza drukowanie wiadomości o tym, co robi.

Zauważ, że nazwa podanego pliku manifestu może być dowolna, ponieważ jarautomatycznie zmieni nazwę i umieści go w odpowiednim katalogu w pliku jar.

Evgeni Sergeev
źródło
6

Można to zrobić bez terminala, bezpośrednio z IDE. Na przykład Netbeans.

  1. Utwórz osobny projekt z pakietami (Create Project - Java - Java Class Library).
  2. Umieść tam swoje zajęcia .java.
  3. Zbuduj ten projekt.
  4. Przejdź do folderu projektu i znajdź tam foldery build i dist.
  5. Znajdź plik .jar w folderze dist.
  6. Pobierz swój inny projekt i dodaj ten plik .jar do bibliotek projektów.
  7. Możesz teraz odwoływać się do klas z tej biblioteki i jej metod bezpośrednio z kodu, jeśli import jest wykonywany automatycznie.
Zon
źródło
3

Oto kolejny fantazyjny sposób na zrobienie tego:

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class

Który pobierze wszystkie pliki .java ( ls | grep .java) z twojego bieżącego katalogu i skompiluje je do .class ( xargs -I {} javac {}), a następnie utworzy plik jar z poprzednio skompilowanych klas ( jar -cf myJar.jar *.class).

Matthieu vdBiggelaar
źródło
2

Być może najbardziej przyjaznym dla początkujących sposobem skompilowania pliku JAR z kodu Java jest użycie IDE (zintegrowane środowisko programistyczne; zasadniczo tylko przyjazne dla użytkownika oprogramowanie do programowania), takie jak Netbeans lub Eclipse.

  • Zainstaluj i skonfiguruj IDE. Oto najnowsza wersja Eclipse .
  • Utwórz projekt w swoim IDE i umieść pliki Java w folderze projektu.
  • Wybierz projekt w IDE i wyeksportuj projekt jako JAR. Dokładnie sprawdź, czy podczas eksportowania są wybrane odpowiednie pliki Java.

Zawsze możesz to wszystko zrobić bardzo łatwo za pomocą wiersza poleceń. Przed wykonaniem polecenia, takiego jak to, upewnij się, że jesteś w tym samym katalogu, co pliki docelowe:

javac YourApp.java
jar -cf YourJar.jar YourApp.class

... zmieniając odpowiednio nazwy „YourApp” i „YourJar” na nazwy własne plików.

Randall Arms Jr.
źródło