通过(Java脚本)接口从shell脚本控制Java实例

control java instance by (java script) interfaces from shell script?

本文关键字:脚本 Java shell 控制 实例 通过 接口      更新时间:2023-09-26

我是java的新手,我指的是一个程序能量。源代码在这里。

它是作为嵌入式applet运行的(见github中的网站链接,因为我不允许发布多个url)(具有浏览器默认语言环境的函数)或者在命令行:

java -jar /home/ntu/Downloads/energy2d.jar

有一些命令,我把它们称为控制接口,我猜它们是一些公共方法,但不知道它们的确切术语,它们在运行时控制程序。参见网站手册scripts.html

可以在嵌入的shell程序中使用它们,也可以在嵌入的applet中从java脚本中查看它们是如何在网站的源代码中调用的。

我不太明白,它应该只是证明例如字符串"reload"由于控件接口的出现是在页面的源代码中使用的。就我目前所知,我不知道它们的定义在哪里;它是在github Scripter2D.java#L55中,我在java代码中失去了跟踪。(不知道这是否有帮助)

现在,我想要的是从外部脚本中调用这些控制接口。比如说一个bash脚本;最后我想让它运行python。

类似命令行伪代码:

片段开始

java -jar /home/ntu/Downloads/energy2d.jar #to start the application
java -do_to_running_program energy2d.jar -public_control_function load path/new_config.xml#to load another configuration file
java -_do_to_running_program -public_control_function run #to restart

片段结束

问题:这怎么可能实现呢?-如果不可能:更改Java代码以使其正常工作的好做法是什么?

假设:通过'java script',您实际上意味着您希望为java applet提供一些服务接口,该服务接口可以由其他进程(本地或远程)访问,并且该服务接口可以由脚本驱动。

如果是这样,那么是的,这是可以实现的——我想到了文件监视和jmx。您最关心的应该是安全性(例如:https://www.rapid7.com/db/modules/exploit/multi/browser/java_jre17_jmxbean)。让你的applet暴露这样一个接口对于测试来说是可以的(但是单元测试总是更好的);但是,我强烈建议不要在最终的applet中公开这样的接口。