2012-02-27 55 views
-2

我有一个Java程序使用外部库,其位置通过类路径指定。现在我想将Java程序变成一个独立的jar文件(所以我可以在程序运行时使用我的IDE来处理其他事情)。转换为罐子,同时保留类路径

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

我能够制作一个jar文件,其中包括类文件,清单文件和库文件(这是在类路径中指定的),但仍然看起来是错误的,因为我没有找到类错误。

+1

细节,细节,细节(换句话说,我们需要它们能够帮助) – KevinDTimm 2012-02-27 13:10:17

+0

[JAR中的Classpath包括JAR]的可能的重复(http://stackoverflow.com/questions/183292/classpath-including-jar-within-a-jar) – 2012-02-27 13:15:11

+0

.java文件只是源代码,不能执行 – qrtt1 2012-02-27 13:16:35

回答

0

为你的Ant脚本。您错过的是将jarpath任务作为字符串生成的类路径。

<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> 
0

以下是如何从命令提示符运行独立应用程序的步骤。 1.创建一个示例java文件,然后保存在特定的位置(如d:\ sample \ Hello.java。 2.打开命令提示符编译该java类,然后像Hello.jar文件创建jar 3.然后设置classpath in环境文件(如D:\ sample \ Hello.jar; )4.现在运行你的java类,它会工作(d:sample> java你好