Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何从包编译可运行的jar?_Java_Makefile_Packages_Javac_Executable Jar - Fatal编程技术网

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

Java:如何从包编译可运行的jar?,java,makefile,packages,javac,executable-jar,Java,Makefile,Packages,Javac,Executable Jar,我的Java应用程序的包结构与此类似: src/com/name/app src/com/name/app/do src/com/name/utils/db 如何将这些目录中的Java文件编译到可运行的jar中?我需要将所需的库打包到生成的JAR(jdbc)中 我一直在Eclipse中做这些事情,但现在我需要向一些人提供一种不用Eclipse编译存储库的方法,我正在考虑制作一个makefile或一个调用必要的javac模式的脚本。看看Ant。这是一个相对简单的构建工具,可以理解,并提供满足

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

src/com/name/app 
src/com/name/app/do 
src/com/name/utils/db
如何将这些目录中的Java文件编译到可运行的jar中?我需要将所需的库打包到生成的JAR(jdbc)中


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

看看Ant。这是一个相对简单的构建工具,可以理解,并提供满足您需求的一切。下面是一个快速的skeleton 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。这是一个相对简单的构建工具,可以理解,并提供满足您需求的一切。下面是一个快速的skeleton 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来做这件事

考虑使用Ant来实现这一点

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

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

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


如果实现正确,Ant很容易使用,构建脚本可以在任何可以安装JDK的平台上运行。事实上,只要做一点工作,您甚至可以设置您的项目,这样用户甚至不需要下载/安装Ant。(提示:将Ant JAR文件和包装脚本添加到项目分区)

首先,考虑使用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
类路径的内容替换为LIB,将主类替换为主类的完全限定名称

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

jar cfm app.jar MANIFEST.MF src/com/name/app/*.class src/com/name/app/do/*.class
其中MANIFEST.MF是前面提到的清单文件,其余的是.java类所在的文件夹


<>最后,为了运行你的应用程序,你只需执行:<代码> java -jar jar。jar >代码> < /p> 首先,考虑使用蚂蚁来完成这项任务。

但由于您要求手动流程,因此需要首先创建一个,如下所示:

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
类路径的内容替换为LIB,将主类替换为主类的完全限定名称

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

jar cfm app.jar MANIFEST.MF src/com/name/app/*.class src/com/name/app/do/*.class
其中MANIFEST.MF是前面提到的清单文件,其余的是.java类所在的文件夹


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

谢谢!我一定会去看蚂蚁的。谢谢!我一定会去找Ant的。非常感谢。这正是我想要的,但考虑到你,Rob和其他响应者建议Ant,我将看看是否可以在本周末设置它。是的,它更简单,并且独立于平台:)。非常感谢。这正是我想要的,但是考虑到你,Rob和其他响应者已经建议Ant,我将看看是否可以在这个周末设置它。是的,它更简单,并且独立于平台:)。