【问题标题】:how to create a jar with compiled classes from a source jar in java如何从java中的源jar创建一个带有编译类的jar
【发布时间】: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 &lt;input.jar&gt; &lt;output.jar&gt; 将导致 &lt;output-jar&gt; 在其中编译文件。

编辑

重申我的问题:

给定一个只有 .java 文件的 jar 文件,我想要一个以最简单的方式包含 .class 文件的 jar 文件

【问题讨论】:

  • 没有包含 Ant 或 Maven 构建文件吗?

标签: java jar compilation javac .class-file


【解决方案1】:

从 DOS 控制台

cd /dir/.class 文件的文件夹。

jar cvf name.jar

【讨论】:

  • 我知道。那不是我的问题。给定一个只有 .java 文件的 jar 文件,我想要一个包含 .class 文件的 jar 文件。
【解决方案2】:

这是我编写的一个非常脏的脚本,用于从源 JAR 构建已编译的 JAR。它可能不适用于所有内容,甚至无法处理复制清单:

#!/bin/bash

if [ "$#" -lt 1 ]; then
    echo "Usage: $0 sources.jar [classpath]"
    echo
    exit 1
fi

OUT_JAR=`basename $1-compiled.jar`

rm -rf $OUT_JAR
rm -rf src
rm -rf classes

mkdir src
mkdir classes

if [ -n "$2" ]; then
  CLASSPATH="-cp $2"
fi

unzip -d src $1
if [ $? -ne 0 ]; then
  echo "Unzip failed"
  exit 1
fi

find src -name *.java | xargs javac -d classes $CLASSPATH
if [ $? -ne 0 ]; then
  echo "Java compilation failed"
  exit 1
fi

jar cf $OUT_JAR -C classes .

if [ $? -ne 0 ]; then
  echo "Jar creation failed"
  exit 1
fi

echo
echo "Compiled and built $OUT_JAR"

也可以在这里找到:https://github.com/satur9nine/sources-jar-compiler/blob/master/compile-sources-jar.sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2011-11-17
    • 2011-04-04
    • 2019-11-22
    相关资源
    最近更新 更多