Как мне сделать JAR из файла .java?

87

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

MyApp.java начинается как класс с пакетом, импорт , то общественный класс MyAppи имеет основную функцию, но она по - прежнему .java файл! Пишу в JDeveloper 11g, если поможет.

Есть идеи, как сделать JAR из этих файлов?

user1303007
источник
1
Я думаю, что это можно сделать намного проще, если использовать такие инструменты упаковки, как ANT или Maven
Churk
Согласитесь с Чаком. Взгляните на ANT. IDE отлично подходят для разработки, но вам нужно понимать, как все работает. Файлы java компилируются через javac в файлы .class, после чего файлы .class могут быть упакованы в jar с помощью команды jar. (У Ant есть задачи для этого, даже у jdeveloper есть мастер для этого).
BigMike
Сам JDeveloper должен иметь возможность создавать файлы jar. Быстрый поиск в Google дает
подсказку
1
Вы можете уточнить свой вопрос?
Romain Hippeau
Перейдите в исходный каталог и запустите команду: - javac * .java && jar cvf JarName.jar * .class
яркое

Ответы:

102

Откройте командную строку.

Перейдите в каталог, в котором находятся ваши файлы .java.

Создать сборку каталога

Запустить компиляцию java из командной строки

javac -d ./build *.java

если ошибок нет, в каталоге сборки у вас должно быть дерево классов

перейдите в каталог сборки и выполните

jar cvf YourJar.jar *

Для добавления ключей командной строки check jar в манифесте

BigMike
источник
Я пробовал компилировать из командной строки, но получаю сообщение об ошибке: Frame1.java:23: package oracle.jdeveloper.layout не существует. Как решить эту проблему? Извините за вопросы новичков ...
user1303007
вам нужно создать путь к классам, ссылающийся на все библиотеки, на которые вы ссылаетесь в своих классах. Проверьте свою установку jdeveloper, там должен быть пример сборки ant (файл build.xml) и хотя бы пара хороших руководств по использованию jDeveloper с ANT на сайте Oracle.
BigMike,
@ user1303007 посмотрите здесь oracle.com/technetwork/articles/adf/part4-098813.html
BigMike
1
Я добавил в свою команду jar опцию для автоматического добавления основного класса в манифест ... jar cfe Main.jar Main *(хотя я запутался, мне пришлось поставить имя основного класса после имени выходного файла.)
Hydroper
31

Просто с помощью командной строки:

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

Конечно, IDE избегают использования терминала командной строки

ab_dev86
источник
11
Вышеупомянутое сработало, однако мне нужно было указать .classmyApp. Так оно и былоjar -cf myJar.jar myApp.class
Navigatron 06
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

Обратите внимание, что приведенное выше будет включать несколько библиотек, если в Windows используйте "," для разделения нескольких файлов, в противном случае в 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», а затем файлы, которые вы хотите включить. Verbose означает вывод сообщений о том, что он делает.

Обратите внимание, что имя предоставленного вами файла манифеста может быть любым, так как jarон автоматически переименовывается и помещается в правильный каталог внутри файла jar.

Евгений Сергеев
источник
6

Это можно сделать без терминала, прямо из IDE. Netbeans, например.

  1. Создайте отдельный проект с пакетами (Create Project - Java - Java Class Library).
  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).

Matthieu vdBiggelaar
источник
2

Возможно, самый удобный для новичков способ скомпилировать JAR из вашего Java-кода - это использовать IDE (интегрированную среду разработки; по сути, просто удобное для пользователя программное обеспечение для разработки), например Netbeans или Eclipse.

  • Установите и настройте IDE. Вот последняя версия Eclipse .
  • Создайте проект в своей среде IDE и поместите файлы Java в папку проекта.
  • Выберите проект в среде IDE и экспортируйте проект как JAR. Дважды проверьте, что при экспорте выбраны соответствующие файлы java.

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

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

... заменяя "YourApp" и "YourJar" на собственные имена ваших файлов соответственно.

Рэндалл Армс мл.
источник