Я знаю, как создать банку из файлов .java или .class.
У меня есть sources.jar
, который содержит .java
файлов. Я хочу скомпилировать эти классы и снова упаковать их в jar
.
например: Это банка, которую я хочу скомпилировать:
hadoop-mapreduce-examples-2.2.0-test-sources.jar
.
Я сделал jar xvf hadoop-mapreduce-examples-2.2.0-test-sources.jar
, чтобы извлечь все.
теперь у меня есть
ls
META-INF org
ls org/apache/hadoop/
examples mapreduce
ls org/apache/hadoop/examples/
TestBaileyBorweinPlouffe.java TestWordStats.java pi terasort
Как вы можете заметить, у меня есть два пакета в org.apache.hadoop
, "examples и mapreduce", оба из которых должны быть скомпилированы. И у меня есть подпакеты в «примерах», которые нужно скомпилировать.
javac org/apache/hadoop/mapreduce/lib/db/TestDBJob.java
Это хорошо скомпилировано
Но как я могу скомпилировать рекурсивно. Я попытался использовать подстановочный знак «*».
Вот что я пробовал:
javac -cp org/apache/hadoop/examples/*
javac: invalid flag: org/apache/hadoop/examples/pi
Usage: javac <options> <source files>
use -help for a list of possible options
javac org/apache/hadoop/examples/*.*
В последнем javac
, выполненном выше, я не вижу компилируемых подпакетов. были скомпилированы только файлы Java верхнего уровня.
Есть ли простое решение, например
javac -jar <input.jar> <output.jar>
приведет к <output-jar>
, в котором есть скомпилированные файлы.
ИЗМЕНИТЬ:
Чтобы повторить мой вопрос:
учитывая банку, в которой есть только .java
файлов, я хочу, чтобы файл jar содержал .class
файлов самым простым способом.