Java Debug 出现致命错误,尝试了多种方案仍然无法解决,请问到底是什么原因

铁泉 发布于 2016/07/11 19:19
阅读 402
收藏 0
业务场景:在浏览器中调用执行系统脚本文件,实现 App 自动化构建的目标。

实现思路:

try {
    ProcessBuilder pb = new ProcessBuilder(scriptAndArgs);
    Process process = pb.start();
    process.waitFor();

    BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
    String line;

    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}

问题所在:scriptAndArgs 包括 3 个字符串对象,第一个是脚本文件(.bat 或 .sh)的绝对路径,第二个是 App 的源码地址(我把代码检出到了本地,所以第二个字符串实际上是源码的本地绝对路径),第三个是 App 的资源绝对路径(包括图片、配置文件、证书)。
调试步入打印 .readLine() 的结果这一行时,报错了,信息为:

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:750]

搜索了这个问题,多数都是说 debug 端口被占用。尝试了多种解决方案,如 hosts 文件中添加 127.0.0.1 与 localhost 的映射、更改 debug 端口、关闭防火墙等,最终依然没有解决问题,感觉无能为力了。是不是我对 exec() 方法的调用存在问题?我在 cmd 窗口中手动输入三个字符串,脚本是可以跑起来的!

开发环境如下——
IDE:IntelliJ IDEA 2016.1.3
JDK:1.7.0_79
Tomcat:8.5.3
加载中
返回顶部
顶部