Як зробити JAR із файлу .java?


87

Я писав просту програму з використанням програми Java (не програми, яка має проекти, а програми в проекті; .java ), яка має єдиний фрейм. Обидва файли є .java, тому я не можу написати маніфест, необхідний JAR.

MyApp.java починається як клас з пакетом, імпорт , то суспільний клас MyAppі має основну функцію, але вона по - , як і раніше .java файл! Я пишу це у JDeveloper 11g, якщо це допомагає.

Будь-які ідеї, як зробити JAR з цих файлів?


1
Я думаю, що це можна зробити набагато простіше, використовуючи пакувальний інструмент, такий як ANT або Maven
Churk 30.03.12

Погодьтеся з Чак. Погляньте на АНТ. IDE чудово підходять для розробки, але ви повинні розуміти, як це працює. java-файли компілюються через javac у файли .class, після цього файли .class можуть бути упаковані в jar за допомогою команди jar. (Ant має завдання для цього, навіть у jdeveloper є якийсь майстер для цього).
BigMike

Сам JDeveloper повинен мати можливість створювати jar-файли. Швидкий пошук у Google пропонує тут інструкцію
stolzem

1
Ви можете пояснити своє питання?
Romain Hippeau

Перейдіть до вихідного каталогу і запустіть команду: - javac * .java && jar cvf JarName.jar * .class
garish

Відповіді:


102

Відкрийте командний рядок.

Перейдіть до каталогу, де є ваші файли .java

Створіть збірку каталогу

Запустіть компіляцію Java з командного рядка

javac -d ./build *.java

якщо помилок немає, у каталозі побудови ви повинні мати своє дерево класів

перейдіть до каталогу побудови та виконайте a

jar cvf YourJar.jar *

Для додавання перемикачів командного рядка перевірки маніфесту


Я спробував компілювати з командного рядка, але з'являється повідомлення про помилку: Frame1.java:23: пакет oracle.jdeveloper.layout не існує Як це вирішити? Вибачте за запитання для початківців ...
user1303007

вам потрібно побудувати шлях до класу, посилаючись на всі бібліотеки, на які ви посилаєтесь у своїх класах. Зверніться до інсталяції jdeveloper, там має бути приклад побудови мурашок (файл build.xml) та принаймні кілька хороших підручників щодо використання jDeveloper з ANT на сайті Oracle.
BigMike

@ user1303007 подивіться тут oracle.com/technetwork/articles/adf/part4-098813.html
BigMike

1
Я додав опцію до моєї команди jar для автоматичного додавання Main-Class до маніфесту ... jar cfe Main.jar Main *(Хоча я заплутався, мені довелося поставити ім'я Main-Class після імені вихідного файлу.)
Hydroper

31

Просто за допомогою командного рядка:

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

Звичайно, IDE уникають використання терміналу командного рядка


11
Вище працювало, проте мені потрібно було вказати .classmyApp. Так і булоjar -cf myJar.jar myApp.class
Navigatron

3
Орфографічні помилки і тут, і передбачається, що оператора пакета немає. Неадекватний.
Маркіз Лорнський,

14

Гаразд, це рішення, яке я хотів би знайти, натомість тут я його пишу:

Спочатку створіть структуру каталогів, що відповідає пакету, визначеному для файлу .java, якщо це my.super.application, створіть каталог "my" і всередині нього "super", а всередині нього .java файл "App.java"

то з командного рядка:

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

Зверніть увагу, що вищезазначене включатиме безліч бібліотек, якщо у вікні використовуйте "," для відокремлення декількох файлів, інакше під використанням GNU / Linux ":" Щоб створити файл jar

   jar -cvfe App.jar App my/app/

вищезазначене створить додаток з відповідним маніфестом із зазначенням програми як основного класу.

Включення необхідних бібліотек у файл jar неможливе за допомогою параметрів командного рядка Java або jar.

Ви можете замість цього:

  1. вручну витягувати бібліотеки до кореневої папки файлу jar
  2. використовуйте IDE, таку як Netbeans, і вставте правило всередину розділу post-jar nbproject / build-impl.xml, щоб витягти бібліотеки всередині jar. Дивіться нижче.
<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>

імена file.reference знаходяться у файлі project.properties після того, як ви додали бібліотеки до IDE Netbeans.


9

Часто вам потрібно буде вказати маніфест, наприклад:

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

Що говорить: "створити багатослівний jarFilename manifestFilename", а потім файли, які ви хочете включити. Багатослівний означає друк повідомлень про те, що він робить.

Зверніть увагу, що ім’я наданого вами файлу маніфесту може бути будь-яким, оскільки воно jarавтоматично перейменовує його та поміщає у потрібний каталог у файлі jar.


6

Це можна зробити без терміналу, безпосередньо з IDE. Наприклад, Netbeans.

  1. Створіть окремий проект з пакетами (Створити проект - Java - Бібліотека класів Java).
  2. Помістіть там свої .java-класи.
  3. Побудуйте цей проект.
  4. Перейдіть до папки проекту та знайдіть там папки build і dist.
  5. Знайдіть файл .jar у вашій папці dist.
  6. Отримайте інший проект і додайте цей файл .jar до бібліотек проектів.
  7. Тепер ви можете посилатися на класи з цієї бібліотеки та її методи безпосередньо з коду, якщо імпорт виконується автоматично для вас.

3

Ось ще один вигадливий спосіб зробити це:

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

Що захопить усі файли .java ( ls | grep .java) з вашого поточного каталогу та зкомпілює їх у .class ( xargs -I {} javac {}), а потім створить файл jar з попередньо скомпільованих класів ( jar -cf myJar.jar *.class).


2

Мабуть, найбільш зручним для початківців способом складання JAR з коду Java є використання IDE (інтегрованого середовища розробки; по суті просто зручного для розробки програмного забезпечення), такого як Netbeans або Eclipse.

  • Встановіть та налаштуйте IDE. Ось остання версія Eclipse .
  • Створіть проект в IDE і помістіть файли Java всередину папки проекту.
  • Виберіть проект в IDE та експортуйте проект як JAR. Перевірте ще раз, що під час експортування вибрано відповідні файли Java.

Ви завжди можете зробити все це дуже легко за допомогою командного рядка. Переконайтесь, що ви знаходитесь в тому ж каталозі, що й цільові файли, перед тим, як виконати таку команду:

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

... змінивши "YourApp" та "YourJar" на власні імена ваших файлів, відповідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.