首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java 9 jshell可以用于在另一个JVM中运行代码吗?

Java 9 jshell可以用于在另一个JVM中运行代码吗?
EN

Stack Overflow用户
提问于 2017-07-05 15:06:38
回答 4查看 1.7K关注 0票数 12

Java 9有一个用于Java的读码打印循环,称为jshell.我在命令行中看到它在基本模式下工作。它也可以用于远程进程吗?换句话说,我能否连接到另一个Java进程并输入在运行时中运行的代码片段?这将是一种改变应用服务器配置状态的好方法,而不必编写带有UI的管理工具。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-06 12:59:04

简单的答案是,没有办法将jshell附加到正在运行的Java进程。jshell是一个独立的应用程序,运行在自己的JVM中。

票数 7
EN

Stack Overflow用户

发布于 2017-07-06 22:47:26

官方没有这样做的方式。

然而,重新绑定代码并通过Java代理在另一个VM上运行它并不困难。但是,这并不像您预期的那么好,因为不清楚shell应该使用什么类加载程序,以及它应该如何与运行中的程序交互。

票数 6
EN

Stack Overflow用户

发布于 2020-04-30 08:59:34

附加JShell是一个项目,它正是为此实现了对JShell的扩展。它使用Java代理与目标JVM进行通信。

我没有使用它,所以我不能说它工作得有多好。

快速检查后的观察

  • 我读过的文件看起来很专业。
  • 代码看起来很小,很简单,好像很久没有开发了。
  • 在bug跟踪器中没有票,这表明它并没有被大量使用。

这个项目的例子读-我。

  • 使用-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=XXXhostname:XXXport (酌情更新XXXhostnameXXXport )启动目标JVM,并在使用JShell之前从该JVM调用new uk.org.cinquin.attaching_jshell.ExistingVMRemoteExecutionControl()
  • 按如下方式调用JShell :使用与上面相同的XXXhostnameXXXport值的java -cp lib/attaching_jshell.jar jdk.internal.jshell.tool.JShellToolProvider --execution "attachToExistingVM:hostname(XXXhostname),port(XXXport)"
  • 在远程JVM中运行如下代码: 导入uk.org.cinquin.attaching_jshell.ExistingVMRemoteExecutionControl;字符串s= ExistingVMRemoteExecutionControl.theGoodsForTesting
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44929943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档