【问题标题】:Java: How to compile a runnable jar from packages?Java:如何从包中编译可运行的 jar?
【发布时间】:2010-03-27 00:54:48
【问题描述】:

我的 Java 应用程序的包结构类似于:

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

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

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

【问题讨论】:

    标签: java makefile packages javac executable-jar


    【解决方案1】:

    看看蚂蚁。这是一个相对简单易懂的构建工具,并提供满足您要求的一切。这是一个快速的框架 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”方法。 Here 是开始学习清单的好地方。

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

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

    【讨论】:

    • 谢谢!我一定会关注 Ant。
    【解决方案2】:

    首先,考虑使用 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
    

    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

    【讨论】:

    • 非常感谢。这正是我一直在寻找的,但考虑到您,Rob 和其他响应者建议 Ant,我会看看这个周末是否可以设置它。
    • 是的,它更简单,并且独立于平台:)。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 2023-03-12
        相关资源
        最近更新 更多