prog.java и prog.class в файле Prog.jar - Как я могу легко обновить этот код? - PullRequest
0 голосов
/ 03 декабря 2010

История вопроса:
Давным-давно, еще до появления динозавров, существовал подрядчик, который написал небольшую программу на Java, которая выполняет некоторые функции и выводит некоторые элементы на экран.

Текущий: Никто здесь не знает много о Java, кроме меня - и я не бегло говорю.

Программа работает, но нам нужно немного больше информации на экране. Из имеющейся документации я думаю, что знаю, как это сделать, и я точно знаю, как печатать, потому что для этого просто используется System.out.println().

У меня есть файл .jar, который, я уверен, на 99% загружается / используется, который содержит .java файлов, соответствующих каждому .class файлу внутри.

Существует ли простой способ (и как я мог бы) слегка изменить один из файлов .java и «скомпилировать» новую версию, чтобы заменить текущий соответствующий файл .class в .jar?

Конечно, я могу открыть и прочитать исходный файл java, но не помню, чтобы процедуры превращали java в «классовые» файлы, и особенно не уверены, что я могу просто удалить полученный .class файл. в файл .jar в качестве замены.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

Добавьте myclass.class в каталог верхнего уровня в myjar.jar :

jar uf myjar.jar myclass.class


Добавить myclass.class в каталог subdir в myjar.jar :

jar uf myjar.jar -C subdir myclass.class


Добавить атрибут Version в манифест myjar.jar :

Сначала создайте файл somefile , содержащий строку Version: "X.Y.Z", затем

jar umf somefile myjar.jar
0 голосов
/ 03 декабря 2010

на базовом уровне, javac - это компилятор; это произведет файлы .class. Существует также команда «jar», которая восстановит ваш файл jar. В зависимости от количества зависимостей, это может быстро усложниться. Вы можете просто набрать «javac» и «jar» (без кавычек), чтобы получить аргументы для его запуска. Другой вариант - настроить скрипт сборки ant ...

, чтобы вы могли сделать что-то вроде (при условии Windows OS):

javac -cp% MY_CLS_PTH% * .java
где MY_CLS_PTH - это то, где находятся любые зависимые классы. Если у вас есть структура пакета, это немного усложняется.

jar -cvf. \ My_class_dir MyJarFile.jar где my_class_dir - это каталог, содержащий файлы .class.

Я думаю, что это правильно (сам не запускал), но это должно быть из-за основ ...

РЕДАКТИРОВАТЬ: Есть способ просто добавить / повторно добавить один файл .class в существующий файл JAR. Проверьте использование команды "jar", похоже, "-u" обновит ее (конечно, вы должны передать файл .class). Также помните, что для любой структуры пакета, имеющейся в этих классах, вам нужна эта структура каталогов, и вы ссылаетесь на класс через эту структуру dir. (Надеюсь, это понятно ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...