检查是否在makefile中安装了Java

时间:2010-08-05 19:07:55

标签: java compiler-construction makefile jvm javac

我正在编写一个编译并运行Java程序的make文件,但它将在不同的平台上运行,所以我希望make文件首先确定是否安装了Java,然后才编译并运行.java文件。

我该怎么做呢?

5 个答案:

答案 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. 使用JNLP并拥有安装程序 提示用户下载 适当的JRE,如果他没有它。
  2. 将您的代码编译为Native Code 使用GCJ(有一些问题 - 有 不适用于所有代码)
  3. 提示您的用户安装Java 其他一些方式。

答案 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。