繁体   English   中英

Java:如何从包中编译可运行的jar?

[英]Java: How to compile a runnable jar from packages?

我的Java应用程序具有类似于以下的包结构:

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

如何将这些目录中的Java文件编译到可运行的jar中? 我需要将所需的库打包到生成的JAR(jdbc)中。

我一直在Eclipse中完成这些操作,但是现在我需要为几个人提供一种无需使用eclipse即可编译存储库的方法,并且我正在考虑制作一个makefile或调用必要的javac模式的脚本。

看一下蚂蚁。 这是一个相对简单的构建工具,易于理解,并提供满足您要求的所有内容。 这是一个快速入门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进程哪个类包含“ main”方法。 是开始学习清单的好地方。

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

无论如何,那应该让您入门。 您可以在遇到问题时提出更具体的问题。

首先,考虑将Ant用于此类任务。

但是,由于您要求手动进行操作,因此需要首先创建一个清单文件 ,如下所示:

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

用您的库替换Class-Path的内容,并用您的主类的完全限定名替换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

考虑使用Ant来执行此操作。 http://ant.apache.org/

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM