Java Linux Shell应用程序

巴特罗米耶·扎扎尔斯基

因此,我刚收到一个创建Java Shell App的任务,无需使用任何第三方库,也无需使用Runtime.exec()或ProcessBuilder API。

我不需要解决方案(显然我想自己做),但是我确实需要提示如何执行此操作?我希望该应用程序打开一个shell提示符,该提示符将接受使用JDK 8(Nashorn?)的各种命令。

谢谢!

次优

不清楚要实现的目标。如果您要运行Nashhorn Shell,则可以这样实现(Java 8)

import jdk.nashorn.tools.Shell;
public class NashornShell {
    public static void main(String[] args) {
        Shell.main(new String[]{ "-scripting"});
    }
}

当您看到Nashorn提示时,jjs>您可以执行Linux命令...

jjs> $EXEC("ls");

它将列出当前目录(使用Linuxls命令)。

...或执行Java命令...

jjs> java.lang.System.out.println("foo");

...或执行JavaScript命令...

jjs> print("foo");

有关更多信息,请参阅nashorn指南

编辑如果只想yourCommand作为参数传递

NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine(new String[]{"-scripting"});
String yourCommand = "ls";
Object eval = engine.eval("$EXEC(\"" + yourCommand + "\")");
System.out.println(eval);

编辑 do you think that instead of Nashorn I could just use raw streams directed to the OS from JVM

以下是可能的

Commands.java

class Commands {
    public static void main(String[] args) {
        System.out.println("ls");
        System.out.println("whoami");
    }
}

运行

#!/bin/sh
java Commands | while read command; do
  echo
  echo "command: $command"
  $command
done

但这显然不建议您execute在输出以下内容时使用Commands

  • 您的Java应用程序无法控制已执行的单个命令的返回状态
  • 如果有一个命令等待用户输入,则您的Java应用程序不知道
  • 您的Java应用程序无法访问命令产生的输出
  • 所有命令都是盲目执行的
  • 还有更多的缺点

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Linux上的Java应用程序挂起

来自分类Dev

Linux上的Java应用程序

来自分类Dev

Linux上的Java应用程序挂起

来自分类Dev

从Java Web应用程序访问Linux本地文件系统

来自分类Dev

从Java Web应用程序访问Linux本地文件系统

来自分类Dev

在Linux上安装较旧的Java应用程序

来自分类Dev

以编程方式导航linux shell应用程序

来自分类Dev

通过JAVA应用程序运行Unix Shell脚本

来自分类Dev

Bash Shell使用Ant构建Java应用程序

来自分类Dev

Linux(Ubuntu)中的Java系统托盘应用程序从服务(守护程序)启动

来自分类Dev

Mac、Windows 和 Linux 上的 Java 桌面应用程序安装程序

来自分类Dev

linux应用程序的特权

来自分类Dev

Linux:我需要使用Shell脚本为自己的应用程序创建安装程序

来自分类Dev

如何在Ubuntu Linux启动时运行Java应用程序

来自分类Dev

如何制作Java跨平台GUI应用程序(Windows,Linux)?我应该使用什么工具?

来自分类Dev

如何在Linux上使用Java应用程序获取数字键盘箭头

来自分类Dev

在嵌入式Linux上启动后自动在后台启动Java应用程序

来自分类Dev

在Linux环境中运行Java应用程序时出现问题

来自分类Dev

在嵌入式Linux上启动后自动在后台启动Java应用程序

来自分类Dev

使用GlassFish在Red Hat Linux服务器上部署Java Web应用程序

来自分类Dev

如何将Java应用程序安装到我的Linux系统

来自分类Dev

非root用户无法读取在Linux上具有文件写入/输出的JAVA应用程序

来自分类Dev

如何通过Web应用程序控制Linux Java Cron作业?

来自分类Dev

如何在Linux上终止Java应用程序,以便执行关闭挂钩?

来自分类Dev

将 Java 应用程序从 Windows 移植到 Linux - 字符格式

来自分类Dev

如何从 Java 应用程序获取 Linux 中正在运行的进程的准确列表?

来自分类Dev

如何从 linux 服务器 java web 应用程序访问本地路径?

来自分类Dev

Linux 命令行中的 Java 应用程序在退出时停止

来自分类Dev

如何从Java程序在Linux中打开另一个命令行应用程序?

Related 相关文章

  1. 1

    Linux上的Java应用程序挂起

  2. 2

    Linux上的Java应用程序

  3. 3

    Linux上的Java应用程序挂起

  4. 4

    从Java Web应用程序访问Linux本地文件系统

  5. 5

    从Java Web应用程序访问Linux本地文件系统

  6. 6

    在Linux上安装较旧的Java应用程序

  7. 7

    以编程方式导航linux shell应用程序

  8. 8

    通过JAVA应用程序运行Unix Shell脚本

  9. 9

    Bash Shell使用Ant构建Java应用程序

  10. 10

    Linux(Ubuntu)中的Java系统托盘应用程序从服务(守护程序)启动

  11. 11

    Mac、Windows 和 Linux 上的 Java 桌面应用程序安装程序

  12. 12

    linux应用程序的特权

  13. 13

    Linux:我需要使用Shell脚本为自己的应用程序创建安装程序

  14. 14

    如何在Ubuntu Linux启动时运行Java应用程序

  15. 15

    如何制作Java跨平台GUI应用程序(Windows,Linux)?我应该使用什么工具?

  16. 16

    如何在Linux上使用Java应用程序获取数字键盘箭头

  17. 17

    在嵌入式Linux上启动后自动在后台启动Java应用程序

  18. 18

    在Linux环境中运行Java应用程序时出现问题

  19. 19

    在嵌入式Linux上启动后自动在后台启动Java应用程序

  20. 20

    使用GlassFish在Red Hat Linux服务器上部署Java Web应用程序

  21. 21

    如何将Java应用程序安装到我的Linux系统

  22. 22

    非root用户无法读取在Linux上具有文件写入/输出的JAVA应用程序

  23. 23

    如何通过Web应用程序控制Linux Java Cron作业?

  24. 24

    如何在Linux上终止Java应用程序,以便执行关闭挂钩?

  25. 25

    将 Java 应用程序从 Windows 移植到 Linux - 字符格式

  26. 26

    如何从 Java 应用程序获取 Linux 中正在运行的进程的准确列表?

  27. 27

    如何从 linux 服务器 java web 应用程序访问本地路径?

  28. 28

    Linux 命令行中的 Java 应用程序在退出时停止

  29. 29

    如何从Java程序在Linux中打开另一个命令行应用程序?

热门标签

归档