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

时间:2012-05-04 20:32:00

标签: java compilation io console runtime

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


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

How To Get Input From Console Class In Java?

Using GUI for console input and outputin java

希望“能够触发来自特定控制台输入的操作,并将反馈打印到控制台”,就像这些问题中描述的控制台应用程序的情况一样答案。

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

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


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

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

0
1
2

所以我想知道以下内容:

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

4 个答案:

答案 0 :(得分:2)

您可以使用JavaCompiler,因为此问题的答案指出:

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

此外,您要做的是evaluate String code

虽然不是真的推荐。

答案 1 :(得分:2)

使用JavaCompiler。它可以从String

编译代码

对于E.G.见STBC&amp;特别是source code。它提供了一个GUI,可以在按钮点击时编译文本区域中的代码。

STBC GUI

但请注意:

System Requirements

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

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

答案 2 :(得分:1)

有一个名为BeanShell

的项目

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

答案 3 :(得分:0)

我知道这是一个陈旧的答案,但未来的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存储库。

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