Java Makefile输出单个可执行文件

Java Makefile输出单个可执行文件,java,makefile,Java,Makefile,如何创建Makefile以使用src/Hello.Java中的单个源文件编译Java程序,从而输出可以使用/prog运行的文件(1)看一看-这是一个比make更适合Java的构建工具。例如,检查ant中的javac命令 (2) 您必须通过运行java虚拟机(java)并告诉它执行什么来运行java程序。没有./xxx方法在java中运行程序;该方法执行脚本或可执行程序,而编译的java程序是字节码,两者都不是。您需要创建一个小shell脚本,称之为“Hello”,使用chmod赋予它执行权限,其

如何创建Makefile以使用
src/Hello.Java
中的单个源文件编译Java程序,从而输出可以使用
/prog
运行的文件(1)看一看-这是一个比make更适合Java的构建工具。例如,检查ant中的
javac
命令

(2) 您必须通过运行java虚拟机(
java
)并告诉它执行什么来运行java程序。没有./xxx方法在java中运行程序;该方法执行脚本或可执行程序,而编译的java程序是字节码,两者都不是。您需要创建一个小shell脚本,称之为“Hello”,使用
chmod
赋予它执行权限,其内容应该如下所示:

#!/bin/bash

java -cp . Hello
(1) 看看——这是一个比make更适合Java的构建工具。例如,检查ant中的
javac
命令

(2) 您必须通过运行java虚拟机(
java
)并告诉它执行什么来运行java程序。没有./xxx方法在java中运行程序;该方法执行脚本或可执行程序,而编译的java程序是字节码,两者都不是。您需要创建一个小shell脚本,称之为“Hello”,使用
chmod
赋予它执行权限,其内容应该如下所示:

#!/bin/bash

java -cp . Hello

Make不是构建Java程序的好工具,主要是因为它的核心设计是识别过时的源(源文件或对象文件)并对其应用转换。Java编译器已经处理了这种依赖性检查,为Java编译定义Make规则是一件非常麻烦的事情

阿德里安·史密斯已经推荐了蚂蚁。我将提出另一种选择

我提出这个建议的主要原因是,在Maven中很容易启动一个简单的项目:您可以告诉Maven创建整个目录结构,然后它就可以工作了。尽管您可能不喜欢Maven创建的目录结构,但如果您在大型项目中工作,那么一致性会有好处。Maven确实有它的局限性,其中一些是非常痛苦的,但是在你了解如何解决它们之前,你通常不会遇到它们

至于运行Java程序,您需要调用JVM。shell脚本是一种方法,但通常直接调用JVM更容易。如果您创建了一个“可执行JAR”(Maven将为您做这件事,包括包含所有依赖项的选项),您可以这样调用它:

java -jar executable.jar

Make不是构建Java程序的好工具,主要是因为它的核心设计是识别过时的源(源文件或对象文件)并对其应用转换。Java编译器已经处理了这种依赖性检查,为Java编译定义Make规则是一件非常麻烦的事情

阿德里安·史密斯已经推荐了蚂蚁。我将提出另一种选择

我提出这个建议的主要原因是,在Maven中很容易启动一个简单的项目:您可以告诉Maven创建整个目录结构,然后它就可以工作了。尽管您可能不喜欢Maven创建的目录结构,但如果您在大型项目中工作,那么一致性会有好处。Maven确实有它的局限性,其中一些是非常痛苦的,但是在你了解如何解决它们之前,你通常不会遇到它们

至于运行Java程序,您需要调用JVM。shell脚本是一种方法,但通常直接调用JVM更容易。如果您创建了一个“可执行JAR”(Maven将为您做这件事,包括包含所有依赖项的选项),您可以这样调用它:

java -jar executable.jar

嗯,在Linux上,有binfmt,它允许实际运行./app.jar。想想看,Java installer for Windows也注册了“jar”扩展,因此可以直接从命令行或通过单击它来运行。唯一的问题是使用控制台还是窗口版本的JVM。不过,更奇特的平台可能没有这种功能(我想到的是HP-UX)。在Linux上,有binfmt,它允许实际运行./app.jar。想想看,Java installer for Windows也注册了“jar”扩展,因此可以直接从命令行或通过单击它来运行。唯一的问题是使用控制台还是窗口版本的JVM。不过,更奇特的平台可能没有这样的功能(想到HP-UX),java编译器适合编译单个文件。它可以编译多个文件,以避免为每个文件启动一个完整的JVM(以前速度非常慢)。Make不是启动单个命令行来处理多个文件的好工具,因此ant是writtne。java编译器适合编译单个文件。它可以编译多个文件,以避免为每个文件启动一个完整的JVM(以前速度非常慢)。Make不是启动单个命令行来处理多个文件的好工具,因此ant是writene。