【发布时间】:2014-10-08 16:07:03
【问题描述】:
我知道如何从 .java 或 .class 文件创建 jar。
我有一个包含.java 文件的sources.jar。我想编译这些类并再次打包成jar。
例如: 这是我要编译的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 文件的 jar 文件
【问题讨论】:
-
没有包含 Ant 或 Maven 构建文件吗?
标签: java jar compilation javac .class-file