Как создать файл 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.
Может ли кто-нибудь сказать мне, что является командой для создания структуры пакета?
Спасибо
Ответы
Ответ 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