You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Marathon JavaDriver对接已启动运行的应用程序

针对已运行Swing应用的JavaDriver附加操作方案

JavaDriver直接启动应用可正常跑自动化流程,但无法对接已运行实例的核心原因是:默认通过launchApplication启动应用时,会自动在JVM启动阶段注入自动化代理组件;已经处于运行状态的Swing进程如果没有提前加载对应代理,是无法直接建立自动化连接的,按以下步骤操作即可实现需求:

  • 启动目标Swing应用时,提前添加JVM参数加载JavaDriver代理包。JVM不支持在运行后无侵入加载核心代理依赖,必须在启动阶段配置,启动命令参考:
    java -javaagent:<本地JavaDriver依赖中javadriver-agent.jar的绝对路径> -jar 你的Swing应用jar包路径.jar
    注意代理包版本必须和你引入的JavaDriver核心依赖版本完全一致,否则会出现版本不匹配的连接报错。
  • 应用启动完成后,跳过JavaDriver自带的应用启动逻辑,通过进程PID附加到目标实例,代码示例:
// 填入目标Swing应用对应的Java进程PID
long appPid = 12345; 
JavaDriver driver = new JavaDriver(appPid);
// 后续自动化操作逻辑和直接启动应用时的写法完全一致,不需要做额外调整
  • 目标进程PID查询方式:Windows系统可在任务管理器-详细信息页面对应java.exe进程查看PID;Linux/macOS系统直接执行jps命令,即可列出所有本机运行的Java进程PID及对应主类名,快速定位目标Swing应用。

如果你用的是JDK9及以上版本,启动Swing应用时需要额外加两个模块开放参数,避免JVM模块权限拦截导致组件识别失败:
--add-opens java.desktop/java.awt=ALL-UNNAMED --add-opens java.desktop/javax.swing=ALL-UNNAMED

目前公开资料里相关方案少的原因是,绝大多数JavaDriver入门文档只覆盖了从0启动应用的基础场景,进程附加属于进阶调试用法,没有放在快速指引章节。没有任何方案可以直接对接完全没做启动参数配置、正常启动的运行中Swing进程,不要在这个方向浪费时间。

内容的提问来源于stack exchange,提问作者NikSU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 11:39:18