我正在编写一个编译并运行Java程序的make文件,但它将在不同的平台上运行,所以我希望make文件首先确定是否安装了Java,然后它才会编译并运行.java文件。
我该如何去做呢?
我正在尝试了解您想要做什么,并且我有预感您不会采用公认的做法,这将使您的过程变得脆弱而脆弱。
“公认”的编译和运行 Java 的方式是使用 Ant 或 Maven,然后在构建机器上构建它们。您不需要 eclipse 或任何其他工具来在您的计算机上构建 Java JDK 或 SDK(名称可以互换)以及 ant 或 maven。
您可以将 Java 代码目录结构放在机器上并通过 ant 或 maven 运行它,然后最终得到类文件或 JAR、EAR、WAR 或您正在开发的任何内容。
正确的部署方法通常是将类文件部署到要运行的计算机上,这反过来需要 JRE(Java 运行时环境)。 JAR 文件的原因是采用类文件的目录结构并将其放在一个文件中。所以这是一个易于部署的好东西。
既然你控制了“构建机器”,你就可以确保你拥有 JDK 和 ant 来进行编译。挑战在于确保您要部署的计算机具有 JRE。
确保机器有 JRE。您有多种选择。
如果您不介意将自己限制在 GNU Make 上(我不认为这是可移植的),您可以使用
$(shell)
函数和 which
命令做一些事情:
JAVAC := $(shell which javac)
ifeq ($(JAVAC),)
$(warning No javac found!)
endif
检查“java”可执行文件是否可以运行(例如使用-version),如果不能运行则失败。
另请注意,JDK 安装程序默认情况下不会将 java compiler (javac) 放置在 PATH 中。 如果您需要编译器,最简单的方法是包含并使用 Eclipse 编译器 ecj,它可以从 eclipse.org 单独下载。
我想知道这些是完成非常简单的任务的真正复杂的方法。
即使安装了 Java 并且没有添加到环境路径中,你也会遇到问题,所以为什么不做一个简单的检查:
String check = System.getenv("PATH");
现在过滤掉 Java 的这个检查字符串。如果你找到它,就意味着你有它,如果你没有找到任何东西,请要求用户安装java。
编辑:我不懂C,所以我写了java命令。想法是您需要检查环境变量以确保最终用户是否有 java。
考虑将 jar 文件与 java 代码捆绑在一起。
makefile 只是一个可执行脚本,因此您可以检查 java 是否在执行环境的 $PATH 中。
你也可以这样做:
#!/bin/bash
java>/dev/null
if [ $? -eq 0 ]
then
echo "java is installed"
else
echo "java is not installed"
fi
但这再次检查脚本的 $PATH 中是否存在 java。