我希望能够以相同的方式输入java命令/代码以在执行期间(在执行“持久性”程序期间)执行,或尽可能接近相同的代码执行它存在于程序的源代码中(作为软件的一部分编程),使用GUI元素,如jTextArea。
以下StackOverflow问题似乎是相关的,但是,与他们的答案一起,似乎不是我正在寻找的。 p>
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
所以我想知道以下内容:
答案 0 :(得分:2)
您可以使用JavaCompiler,因为此问题的答案指出:
https://stackoverflow.com/a/935316/420001
此外,您要做的是evaluate
String
code
:
虽然不是真的推荐。
答案 1 :(得分:2)
使用JavaCompiler
。它可以从String
。
对于E.G.见STBC&amp;特别是source code。它提供了一个GUI,可以在按钮点击时编译文本区域中的代码。
但请注意:
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存储库。
目前看起来有点被抛弃,但也许它不需要维护?