首页 > 解决方案 > 如何编写 Java 可执行的 scala jar 来获取机器的主机名?

问题描述

我想在 Scala 中执行此活动并使用 Java 执行它:

hostname -i

用于此的 scala 代码是:

import java.net._

object HostName {
    def main(args: Array[String]){
        val localhost: InetAddress = InetAddress.getLocalHost
        val localIpAddress: String = localhost.getHostAddress
        println(localIpAddress)

    }
}

在运行上述程序的机器上,没有安装 Scala。它确实安装了Java。据我了解,Java 可以执行 Scala 代码。

在我的本地,我执行这些步骤并得到答案:

scalac HostName.scala
scala HostName

我还注意到生成了两个文件:

HostName$.class
HostName.class

我的目标是用 Java 运行一个 Scala 文件并在 shell 中得到这个代码hostname -i 的结果。像这样的东西:OUT=$(<the command to execute the script and get the result of println>)

我试过运行HostNamewithjavap但它没有给出正确的结果:

JAVA_HOME=/opt/random_mde/package/RandomJDK11/current/Contents/Home/bin/javap HostName

结果是:

ab-mbp-parvals

而不是来自 Scala 代码的 IP 地址:a.b.c.d. 如果我跑hostname而不跑hostname -i,我会得到ab-mbp-parvals。如果我hostname -i在 linux 机器上运行,我会得到 IP。

如何执行 scala 代码来执行hostname -i不安装hostname在只有 Java 的机器上的工作?我很高兴jar在安装了 Scala 的机器上编写代码。

标签: javascalajarscalacjavap

解决方案


推荐阅读