【开发环境】调试出错:transport library not found: dt_socket 问题排查

1. 问题描述

在IDEA跑一段代码:

public class Hello {
    public static void main(String[] args) {
        System.out.println("hello world");
    }
}

使用Run的时,正常执行:

hello world

Process finished with exit code 0

使用Debug时,控制台报错:

FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_LOAD(196)
ERROR: transport library not found: dt_socket
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)
JDWP exit error AGENT_ERROR_TRANSPORT_LOAD(196): No transports initialized [debugInit.c:750]

Process finished with exit code 1

在这里插入图片描述

2. 常规排查

通常这个问题出自于 IDEA 的配置错误。
排查步骤如下:

2.1. 配置JDK

打开Project Structure:File -> Project Structure。
在这里插入图片描述
在这里插入图片描述

2.2. JDK 完整性排查

若配置正确,依然不对,那就要怀疑是不是 JDK 本身的问题了。检查 JDK 是否存在以下文件:

dir “%JAVA_HOME%\jre\bin\jdwp.dll”
dir “%JAVA_HOME%\jre\bin\dt_socket.dll”

如果 JDK 确定有问题,或者高度怀疑 JDK 有损坏,那么换一个新的 JDK。

2.3. 检查系统环境变量

这里环境变量配置的 JDK,和 IDEA 里配置的保持一致。

环境变量的问题不关键,毕竟在 IDEA 里可以配置多个 JDK,IDEA 是会自己去找 JDK 路径的。不过为了排查问题,姑且把环境变量指向的 JDK 和 IDEA 里配置的 JDK 对齐。

在这里插入图片描述
在这里插入图片描述

2.4. 总结

常规检查的思路就是,从 IDEA 到 JDK 这条路径,每个节点都排查一遍,大概率出问题在某个节点上,节点排查完毕一般就能解决。

3. 深度排查

当我做完常规排查,依然没解决。

3.1. 控制台调试

在控制台上执行 java 文件

E:\leetCode\leetcode\editor\cn>javac Hello.java

E:\leetCode\leetcode\editor\cn>java Hello
hello world

从以上代码看来 JDK 可以正常运行。

E:\leetCode\leetcode\editor\cn>java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -cp . Hello
ERROR: transport library not found: dt_socket
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)
JDWP exit error AGENT_ERROR_TRANSPORT_LOAD(196): No transports initialized [debugInit.c:750]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_LOAD(196)

当我在控制台上使用调试排查时,也出现了错误。调试命令如下:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -cp . Hello

由此可以排除 IDEA 的问题。
至此,我们需要确定,2.2 和 2.3 排查是否正确。重新排查 JDK 和环境变量。

3.2. 问题定位

查看 java 和 JAVA_HOME 信息:

where java
java -version
echo %JAVA_HOME%
E:\leetCode\leetcode\editor\cn>where java
D:\开发软件\Java\jdk1.8.0_181\bin\java.exe

E:\leetCode\leetcode\editor\cn>java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

E:\leetCode\leetcode\editor\cn>echo %JAVA_HOME%
D:\开发软件\Java\jdk1.8.0_181

其中包含了中文目录名 开发软件。Java 加载 JNI 本地库时,有时会在包含中文路径的情况下出现加载失败的问题。

3.3. 问题修复

当我把路径改为纯英文名路径后,问题修复。
问题复现:
我再次把 jdk 放到中文名目录下,问题出现。由此可以确定是这个中文名路径导致。

4. PS 感想

        其实中间还走了很多弯路。
        一开始是怀疑 IDEA 有问题,因为我的 JDK 是官网下载的完整版,环境变量也检查过数次,都是没问题的。而 IDEA 是使用的破解版,恰好近期破解版出了点问题。于是卸载安装了数次,用了个社区版。
        当我用了社区版,明明是新安装的,却有很多设置,比如有近期项目。于是就去 C:\Users[用户名]\AppData\Roaming\JetBrains\ 下把对应版本的设置全删了,再重新安装,然而结果可想而知,并没有解决问题。
        然后我开始怀疑是不是新安装的 docker 导致。
        当没有思路的时候,就会到处乱撞。
        于是我回到本源来排查。在控制台上跑 Java 文件,在控制台上做调试。发现控制台也出错。于是可以彻底把 IDEA 的问题排除。专注在 JDK 这一端的排查。既然 JDK 没问题,那可能就是路径的问题了。于是才找到问题根源。
        windows 还是不要用中文目录了好,即便现在我用了 windows11,还是逃不过编码魔咒。

D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53\bin\catalina.bat run [2025-12-15 02:28:33,054] 工件 e-nonmotor:war exploded: 正在等待服务器连接以启动工件部署… Using CATALINA_BASE: "C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd" Using CATALINA_HOME: "D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53" Using CATALINA_TMPDIR: "C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\temp" Using JRE_HOME: "C:\Program Files\Java\jdk8u302-b08" Using CLASSPATH: "D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53\bin\bootstrap.jar;D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53\bin\tomcat-juli.jar" 已连接到地址为 ''127.0.0.1:55150',传输: '套接字'' 的目标虚拟机 15-Dec-2025 14:28:34.492 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/8.5.53 15-Dec-2025 14:28:34.494 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Mar 11 2020 10:01:39 UTC 15-Dec-2025 14:28:34.494 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号(:8.5.53.0 15-Dec-2025 14:28:34.494 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 10 15-Dec-2025 14:28:34.494 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Program Files\Java\jdk8u302-b08\jre 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 版本: 1.8.0_302-b08 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Temurin 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\conf\logging.properties 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:55150,suspend=y,server=n 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\captureAgent\debugger-agent.jar=file:/C:/Users/ex_xiachunlin/AppData/Local/Temp/capture.props 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512m 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1024m 15-Dec-2025 14:28:34.496 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote= 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.password.file=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\jmxremote.password 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.access.file=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\jmxremote.access 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs= 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\temp 15-Dec-2025 14:28:34.497 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk8u302-b08\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Oracle\product\11.2.0\client_1;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Java\jdk8u302-b08\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Git\cmd;C:\Program Files\maven\apache-maven-3.9.8\bin;C:\Program Files\dotnet\;C:\insolu\client001;C:\Users\ex_xiachunlin\AppData\Local\Microsoft\WindowsApps;;.] 15-Dec-2025 14:28:34.568 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-18081"] 15-Dec-2025 14:28:34.585 信息 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read 15-Dec-2025 14:28:34.596 信息 [main] org.apache.catalina.startup.Catalina.load Initialization processed in 339 ms 15-Dec-2025 14:28:34.628 信息 [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina] 15-Dec-2025 14:28:34.629 信息 [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.53 15-Dec-2025 14:28:34.636 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-18081"] 15-Dec-2025 14:28:34.646 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 50 ms 已连接到服务器 [2025-12-15 02:28:35,141] 工件 e-nonmotor:war exploded: 正在部署工件,请稍候… 15-Dec-2025 14:28:46.097 信息 [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 [2025-12-15 02:28:46,678] 工件 e-nonmotor:war exploded: 工件已成功部署 [2025-12-15 02:28:46,678] 工件 e-nonmotor:war exploded: 部署已花费 11,537 毫秒 分析以下问题
最新发布
12-16
### 回答1: 这个错误提示是说找不到 transport library,具体是 dt_socketdt_socketJava 调试器使用的一种传输协议,如果找不到这个库,可能是因为 Java 调试器没有正确安装或配置。需要检查 Java 调试器的安装和配置,确保正确地设置了 dt_socket 的路径和环境变量。 ### 回答2: transport library not found: dt_socket是一个Java编程语言调试错误,它通常发生在程序员试图以远程模式运行Java代码时遇到的问题dt_socketJava远程调试协议的一部分,它允许在远程机器上的Java虚拟机中调试代码。 要解决该问题,首先要确保目标机器上已安装了Java Development Kit(JDK)。其次,确保Java运行时的配置参数已正确设置,如设置了“-Xdebug”和“-Xrunjdwp:transport = dt_socket”的选项。若还是出现“transport library not found: dt_socket”错误,则需要检查JDK的环境变量设置是否正确。 另一种可能的解决方法是安装漏洞修复程序,升级最新的JDK版本。同时,需要确保你使用的Java开发工具在运行时是否已正确指定调试端口。 总之,transport library not found: dt_socket是一个常见的Java调试错误。要解决该问题,需要确保目标机器上已安装JDK和正确设置Java虚拟机的配置参数以及环境变量。如果问题仍然存在,则可能需要升级JDK版本或安装漏洞修复程序。 ### 回答3: "transport library not found: dt_socket"是指在Java远程调试时出现的错误,这个错误提示显示远程调试器无法找到dt_socket库。dt_socket库是用于Java远程调试的一个套接字通信协议,当它无法被找到时就会出现这个错误。 这个错误通常出现在使用Java远程调试时,在此过程中我们需要启用Java虚拟机参数,其中包括“-agentlib”和“-Xdebug”和“-Xrunjdwp”这些参数。当这些参数不正确配置时,就会出现“transport library not found: dt_socket”错误。 为了解决这个错误,我们可以按照以下步骤进行操作: 1. 检查Java虚拟机参数。在程序的参数设置中,要确保正确地使用“-agentlib”、“-Xdebug”和“-Xrunjdwp”参数,确保它们在启动JVM时被正确定义和使用。 2. 检查操作系统环境变量。Java远程调试可能需要一些库文件,在操作系统上安装了这些库文件后,将它们添加到LD_LIBRARY_PATH或PATH环境变量中,以便JVM可以正确地找到它们。 3. 检查防火墙设置。如果Java远程调试的端口在您的机器上被阻止,则可能需要优化防火墙设置。 您需要允许与远程机器进行通信的端口。 总结来说,出现“transport library not found: dt_socket”错误是由于Java远程调试器无法找到dt_socket库所导致的。我们需要检查JVM参数配置、操作系统环境变量和防火墙设置以确定并解决问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值