2010-03-27 26 views
1

我的Java应用程序得到了一个类似的封装结构:Java:如何从软件包编译可运行jar?

src/com/name/app 
src/com/name/app/do 
src/com/name/utils/db 

我怎么会去编这些目录中的Java文件中运行的JAR?我需要将所需的库打包到生成的JAR(jdbc)中。

我一直在Eclipse中完成这些工作,但现在我需要提供一些编译版本库的方法,而无需使用eclipse,并且我正在考虑创建一个makefile或一个调用必要的脚本javac模式。

回答

4

首先,考虑使用Ant进行此类任务。

不过既然你问了一个手动过程,你需要首先创建一个manifest file,像这样:

Manifest-Version: 1.0 
Created-By: 1.6.0 (Sun Microsystems Inc.) 
Class-Path: lib/jdbc.jar lib/otherlib.jar 
Main-Class: com.name.app.MainClass 

与库替换类路径的内容,的Main-Class与您的主类的完全限定名称。

然后,你需要生成实际的.jar,使用以下命令:

jar cfm app.jar MANIFEST.MF src/com/name/app/*.class src/com/name/app/do/*.class 

MANIFEST.MF就是前面提到的清单文件,剩下的是文件夹在您的.java类别在于。

最后,要运行您的应用程序,您只需执行:java -jar app.jar

+0

非常感谢。这正是我正在寻找的,但考虑到你,Rob和其他响应者已经建议Ant,我会看看我是否可以在本周末设置它。 – John 2010-03-27 10:59:28

+0

是的,它更简单,并且与平台无关:)。 – 2010-03-27 12:13:43

5

看看Ant。这是一个相对简单的构建工具,可以理解并提供满足您需求的所有内容。这里有一个快速骨架的build.xml让你开始:

<project name="my_app_name" default="jar"> 

    <target name="compile"> 
    <javac srcdir="src" destdir="bin"> 
     <classpath> 
      <fileset dir="lib"> 
       <include name="**/*.jar" /> 
      </fileset> 
     </classpath> 
    </javac> 
    </target> 

    <target name="jar"> 
    <jar manifest="manifest_file" destfile="dist/my_app_name.jar"> 
     <fileset dir="bin" /> 
     <fileset dir="lib" /> 
    </jar> 
    </target> 

你需要创建一个清单文件,该文件会告诉其类持有“主”方法的Java程序。 Here是开始学习舱单的好地方。

作为生成非常混乱的Ant构建文件的替代方法,您可以右键单击Eclipse项目并选择“导出...”,然后选择“常规”>“Ant构建文件”。

无论如何,这应该让你开始。在遇到它们时,您可以提出更具体的问题。

+0

谢谢!我一定会看看Ant。 – John 2010-03-27 10:57:54

0

我建议您使用Apache Ant来实现您的构建脚本。

如果实施正确,Ant易于使用,构建脚本可以在任何可以安装JDK的平台上运行。事实上,通过一些工作,您甚至可以设置项目,以便用户甚至不需要下载/安装Ant。 (提示:将Ant JAR文件和包装脚本添加到您的项目发行版中)