检查 Java 是否安装在 makefile 中

问题描述 投票:0回答:5

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

我该如何去做呢?

java makefile jvm javac
5个回答
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. 将您的代码编译为本机代码 使用 GCJ(有一些问题 - 是否 不适用于所有代码)
  3. 提示您的用户安装 Java 其他方式。

1
投票

如果您不介意将自己限制在 GNU Make 上(我不认为这是可移植的),您可以使用

$(shell)
函数和
which
命令做一些事情:

JAVAC := $(shell which javac)

ifeq ($(JAVAC),)
$(warning No javac found!)
endif

0
投票

检查“java”可执行文件是否可以运行(例如使用-version),如果不能运行则失败。

另请注意,JDK 安装程序默认情况下不会将 java compiler (javac) 放置在 PATH 中。 如果您需要编译器,最简单的方法是包含并使用 Eclipse 编译器 ecj,它可以从 eclipse.org 单独下载。


0
投票

我想知道这些是完成非常简单的任务的真正复杂的方法。
即使安装了 Java 并且没有添加到环境路径中,你也会遇到问题,所以为什么不做一个简单的检查:

String check = System.getenv("PATH");  

现在过滤掉 Java 的这个检查字符串。如果你找到它,就意味着你有它,如果你没有找到任何东西,请要求用户安装java。

编辑:我不懂C,所以我写了java命令。想法是您需要检查环境变量以确保最终用户是否有 java。


-1
投票

考虑将 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。

© www.soinside.com 2019 - 2024. All rights reserved.