我正在编写一个编译并运行Java程序的make文件,但它将在不同的平台上运行,所以我希望make文件首先确定是否安装了Java,然后才编译并运行.java文件。
我该怎么做呢?
答案 0 :(得分:3)
我正在努力了解你想要做什么,并且我预感到你没有采用公认的做法,这将使你的过程变得脆弱和脆弱。
编译和运行Java的“接受”方式是使用Ant或Maven,然后在构建机器上构建它们。您不需要eclipse或任何其他工具来构建Java JDK或SDK(名称可以互换)以及计算机上的ant或maven。
您可以将Java代码目录结构放在计算机上并通过ant或maven运行,然后最终得到类文件或JAR,EAR,WAR或者您正在开发的任何内容。
部署的正确方法是将类文件部署到要运行的计算机上,而这又需要JRE(Java运行时环境)。 JAR文件的原因是获取类文件的目录结构并将其放在一个文件中。因此,易于部署是一件好事。
由于您可以控制“构建计算机”,因此可以确保在其上同时具有JDK和ant以便能够编译。面临的挑战是确保您部署的计算机具有JRE。
确保机器具有JRE。你有几个选择。
答案 1 :(得分:1)
如果您不介意将自己限制在GNU Make(我不认为这是可移植的),您可以使用$(shell)
函数和which
命令执行某些操作:
JAVAC := $(shell which javac)
ifeq ($(JAVAC),)
$(warning No javac found!)
endif
答案 2 :(得分:0)
检查是否可以运行“java”可执行文件(例如使用-version),如果没有则运行失败。
另请注意,JDK安装程序默认情况下不将java 编译器(javac)放在PATH中。如果您需要编译器,最简单的方法是包含和使用Eclipse编译器ecj,它可以从eclipse.org单独下载。
答案 3 :(得分:0)
我想知道这些是完成一项非常简单任务的复杂方法 即使安装了Java并且未在环境路径中添加,您也会遇到问题,所以为什么不进行简单的检查:
String check = System.getenv("PATH");
现在过滤掉这个检查String for Java。如果你找到它,意味着你有它,如果你没有找到任何东西,请让用户安装java。
编辑:我不知道C,所以我写了java命令。想法是你需要检查环境变量以确保你是否有最终用户的java。答案 4 :(得分:-1)
考虑使用java代码捆绑jar文件。
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。