保留classpath时转换为jar

时间:2012-02-27 13:06:30

标签: java jar classpath manifest executable-jar

我有一个使用外部库的Java程序,其位置是通过类路径指定的。我现在想把Java程序变成一个独立的jar文件(所以我可以在程序运行时将我的IDE用于其他事情)。

如何将现有的.java文件转换为可执行的jar文件?

我能够创建一个包含类文件,清单文件和库的jar文件(在类路径中指定)的jar文件,但是这看起来仍然是错误的,因为我找不到类错误。

2 个答案:

答案 0 :(得分:0)

Ant脚本。你错过了类路径生成作为jar任务的字符串。

<target name="all">
    <property name="dir" value="yourProjectDir" />
    <property name="name" value="$yourProjectName" />

    <!-- clean -->
    <delete dir="temp/" />
    <mkdir dir="temp/bin/" />

    <!-- prepare libs -->
    <copy todir="temp/libs/"><fileset dir="${dir}/lbs/" /></copy>

    <!-- prepare classpath -->
    <pathconvert property="classpath" pathsep=" ">
        <path><fileset dir="temp/libs/" /></path>
        <chainedmapper><flattenmapper /><globmapper from="*" to="libs/*" /></chainedmapper>
    </pathconvert>

    <!-- compile -->
    <javac destdir="temp/bin/" srcdir="${dir}/src/" target="1.6" source="1.6" includeAntRuntime="false">
        <classpath>
            <pathelement location="temp/bin/" />
            <fileset dir="temp/libs/" />
        </classpath>
    </javac>

    <!-- jar -->
    <jar destfile="temp/${name}.jar" basedir="temp/bin/">
        <manifest>
            <attribute name="Main-Class" value="Main" />
            <attribute name="Class-Path" value="${classpath}" />
        </manifest>
    </jar>

    <!-- zip jar + libs -->
    <zip destfile="${name}-${version}.zip">
        <fileset dir="temp" includes="${name}.jar, libs/" />
    </zip>
</target>

答案 1 :(得分:0)

以下是步骤,如何从命令提示符单独运行App。 1.创建一个示例java文件,然后保存在特定位置(如d:\ sample \ Hello.java。 2.打开命令提示符编译那个java类,然后像Hello.jar文件一样创建jar 3.然后在Environment文件中设置classpath(如D:\ sample \ Hello.jar; 4.现在运行你的java类,它将起作用(d:sample&gt; java Hello