如何像执行实际Java代码一样执行控制台或GUI输入?

如何像执行实际Java代码一样执行控制台或GUI输入?,java,compilation,io,console,runtime,Java,Compilation,Io,Console,Runtime,我希望能够输入java命令/代码,以便在运行时(在“持久”程序的执行过程中)以相同的方式执行,或者尽可能接近相同的代码,如果该代码出现在程序的源代码上(作为软件的一部分编程),则使用GUI元素(如jTextArea) 下面的问题似乎是相关的,但是,随着他们的答案,似乎不是我想要的 我不想“能够从特定的控制台输入触发操作,并将反馈打印到控制台”,这些问题和答案中描述的控制台应用程序似乎就是这样 我想要的是“能够从控制台(或GUI)输入执行我无法预测或控制的实际java代码” 注:这里的“我不

我希望能够输入java命令/代码,以便在运行时(在“持久”程序的执行过程中)以相同的方式执行,或者尽可能接近相同的代码,如果该代码出现在程序的源代码上(作为软件的一部分编程),则使用GUI元素(如jTextArea)


下面的问题似乎是相关的,但是,随着他们的答案,似乎不是我想要的

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

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

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


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

例如,我希望运行时输入
For(int i=0;i可以使用,因为这个问题的答案是:

另外,您要做的是
评估
字符串


不过,这并不是真正的建议。

有一个名为

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

使用。它可以从
字符串编译代码

有关示例,请参阅&尤其是。它提供了GUI,可以在单击按钮时在文本区域编译代码

但请注意:

STBC将运行在任何具有版本1.6+Java插件*JDK(又名SDK)的计算机上


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

我知道这是一个古老的答案,但对于未来的谷歌用户来说:

我推荐JavaREPL,其来源如下:

全能者要求的是Java语言的REPL,这就是JavaREPL提供的

JavaREPL提供了一个在线演示:

JavaREPL还有一个Intellij插件和一个CLI版本,这两个版本都链接到Github存储库中


它目前看起来有点废弃,但可能不需要维护?

这在任何编译语言中都不容易,JVM在这里没有好处。这是可能的,但充其量也不是微不足道的。我认为这将被称为反射。这完全是微不足道的;有一个Java编译API,只需将代码放入主函数和tem中即可porary class.IMO bean shell、JRuby、groovy等通过脚本API将更容易。不过,无论哪种方式,都不难。@Randy,不是反射。很好!这正是我想要的!现在我也知道如何正确引用它了!(“要计算并将一个字符串代码转换为可编译代码,编译并执行它”-基于您和指定来源的文本)非常感谢Josh!A+1是当之无愧的,不仅因为第一次响应,而且因为它非常有帮助和足智多谋。强硬的Josh是第一个回答的人,您的答案更容易理解,甚至更足智多谋(难以访问源代码示例不是那么直接),格式更好。+1并被选中。我还被迫投票支持@Josh的答案,作为第一个暗示我将要做什么的答案。事实上,我考虑只添加一条评论,但我认为我会把这个问题作为一个更公正的答案。:)
0
1
2