微醺的鸡蛋面 · Day 07:撰寫第一支CNN 程式 -- ...· 11 月前 · |
粗眉毛的硬币 · 【quill.js】如何使用Containe ...· 1 年前 · |
力能扛鼎的饼干 · python TypeError: ...· 1 年前 · |
近视的熊猫 · 地形图绘制 - 知乎· 1 年前 · |
睡不着的红茶 · handsontable结合js-xlsx实 ...· 1 年前 · |
Java 9有一个用于Java的读码打印循环,称为
jshell
.我在命令行中看到它在基本模式下工作。它也可以用于远程进程吗?换句话说,我能否连接到另一个Java进程并输入在运行时中运行的代码片段?这将是一种改变应用服务器配置状态的好方法,而不必编写带有UI的管理工具。
简单的答案是,没有办法将jshell附加到正在运行的Java进程。jshell是一个独立的应用程序,运行在自己的JVM中。
官方没有这样做的方式。
然而,重新绑定代码并通过Java代理在另一个VM上运行它并不困难。但是,这并不像您预期的那么好,因为不清楚shell应该使用什么类加载程序,以及它应该如何与运行中的程序交互。
附加JShell 是一个项目,它正是为此实现了对JShell的扩展。它使用Java代理与目标JVM进行通信。
我没有使用它,所以我不能说它工作得有多好。
快速检查后的观察
这个项目的例子读-我。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=XXXhostname:XXXport
(酌情更新
XXXhostname
和
XXXport
)启动目标JVM,并在使用JShell之前从该JVM调用
new uk.org.cinquin.attaching_jshell.ExistingVMRemoteExecutionControl()
。
XXXhostname
和
XXXport
值的
java -cp lib/attaching_jshell.jar jdk.internal.jshell.tool.JShellToolProvider --execution "attachToExistingVM:hostname(XXXhostname),port(XXXport)"
试试 阿尔萨斯 ,它和jshell一样,是一个很好的REPL,并通过arthas实现了附加-另一个-jvm。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券
近视的熊猫 · 地形图绘制 - 知乎 1 年前 |