Подтвердить что ты не робот

Как создать файл jar с структурой пакета?

У меня есть структуры папок

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

Когда я запускаю следующую команду "jar cvf asd.jar *.class", она дает jar со всеми файлами класса. Но структура папок не генерируется. Все файлы классов должны находиться под "com.cdy/ws", но все классы находятся на одном уровне с META-INF. Может ли кто-нибудь сказать мне, что является командой для создания структуры пакета?

Спасибо

4b9b3361

Ответ 1

Вам нужно начать создавать JAR в корне файлов.

Итак, например:

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

Предполагается, что path/to/classes содержит каталог com.

FYI, в наши дни для большинства людей относительно редко используется команда jar, так как они будут использовать инструмент построения, такой как Ant или Maven, чтобы позаботиться об этом (и других аспектах сборки). Это стоит того, чтобы позволить одному из этих инструментов позаботиться обо всех аспектах вашей сборки, и еще проще с хорошей IDE, чтобы помочь написать build.xml (Ant) или pom.xml (Maven).

Ответ 2

Вы хотите

$ jar cvf asd.jar .

чтобы указать каталог (например, .) на jar из. Это будет поддерживать вашу структуру папок в файле jar.

Ответ 3

Шаг 1: перейдите в каталог, в котором классы хранятся в командной строке (или приглашении командной оболочки Linux)
Как для проекта.
C:/workspace/MyProj/bin/classess/com/test/*.class

Перейдите в каталог с помощью команды:

cd C:/workspace/MyProj/bin

Шаг 2: Используйте команду ниже для создания файла jar.

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

Используя приведенную выше команду, классы будут помещены в банку в структуре каталогов.

Ответ 4

Из каталога, содержащего папку 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

Ответ 5

этот следующий код дал мне правильный ответ

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

он добавил файл свойств (log4j), он добавил файлы jar в lib. а затем он переместился внутрь bin, чтобы получить файлы классов с пакетом.

Ответ 6

Ваше указанное имя_папки должно находиться на пути C:\Program Files\Java\jdk1.7.0_02\bin Имя папки, имеющее файлы классов.

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

Теперь program1.jar создаст в C:\Program Files\Java\jdk1.7.0_02\bin путь

Ответ 7

Просто больше, чем выше -

  • Храните содержимое упаковки Java внутри каталога и убедитесь, что внутри него нет ничего, кроме ваших пакетов Java и соответствующих классов Java.

  • Откройте команду Command (если Windows) Prompt, дойдите до содержащего пути к каталогу, как показано ниже -

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

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

Ответ 8

Чтобы не добавлять исходные файлы .java к вашему пакету, вы должны сделать

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

Предположим, что ваша структура проекта похожа на

myproject/
    src/
      com/
        mycompany/
          mainClass.java
          mainClass.class