如何执行控制台或GUI输入,就像它是真正的Java代码一样?

我希望能够以相同的方式输入java命令/代码以在运行时(在执行“持久性”程序期间)执行,或尽可能接近,如果它存在则执行相同的代码关于程序的源代码(作为软件的一部分编程),使用GUI元素,如jTextArea。


以下StackOverflow问题似乎是相关的,但是,与他们的答案一起,似乎并不是我正在寻找的。

如何从Java中获取来自控制台类的输入?

在java中使用GUI进行控制台输入和输出

我不想“能够从特定的控制台输入触发操作,并将反馈打印到控制台”,就像那些问题和答案中描述的控制台应用程序的情况一样。

我想要的是“能够执行实际的java代码,我无法预测或控制,从控制台(或GUI)输入”。

注意:“我无法预测也无法控制”这里指的是“开发人员”……当然,如果我是输入代码的人,我可以预测并“控制”它,就像“用户”那样。


由于java使用虚拟机环境,我认为它可能会执行“运行时输入的代码”……但我不确定这样的事情是否可能。

例如,我想在“GUI控制台”(例如jTextArea)中输入for(int i=0; i<3; i++){System.out.println(i);}的运行时输入,按下回车键或单击“发送”按钮,执行(“编译”和“?”),并给出相同的输出,就好像它是原始源代码的一部分,因此:

 0 1 2 

所以我想知道以下内容:

  • 可能吗?
  • 如果是,我该怎么办? (或者,如果不是,最接近的替代方案是什么?)

使用JavaCompiler 。 它可以从String编译代码。

对于EG,请参阅STBC ,特别是源代码 。 它提供了一个GUI,可以在按钮点击时编译文本区域中的代码。

STBC GUI

但请注意:

系统要求

STBC将在任何具有1.6+ Java Plug-In * JDK(AKA SDK)版本的计算机上运行。

(*)STBC使用的API只是tools.jar中编译器的公共接口,它只与JDK一起分发(尽管JDK的’public JRE’似乎也获得了tools.jar )。 这导致在运行本机jar或web启动应用程序时出现一些不寻常的要求。

你可以使用JavaCompiler ,因为这个问题的答案是:

https://stackoverflow.com/a/935316/420001

此外,您要做的是evaluate String code

但并不是真的值得推荐。

有一个名为BeanShell的项目

“简而言之,BeanShell是动态解释的Java,加上脚本语言和灵活的环境都融入了一个干净的包中。”

我知道这是一个旧的答案,但对于未来的Google员工:

我建议使用JavaREPL,其源代码可在此处获取: https : //github.com/albertlatacz/java-repl

AlmightyR要求的内容称为Java语言的Read-Eval-Print-Loop(REPL),这是JavaREPL提供的。

JavaREPL有一个在线演示: http : //www.javarepl.com/console.html

JavaREPL还有一个Intellij插件和一个CLI版本,它们都链接到Github存储库。

它目前看起来有点被抛弃,但也许它不需要维护?