相关文章推荐
无邪的黄花菜  ·  Docker入门_container ...·  1 年前    · 
坏坏的路灯  ·  java如何获取json数组 ...·  2 年前    · 
爱跑步的手套  ·  WS-AtomicTransaction ...·  2 年前    · 

java的attach机制,可以无侵入的动态加载一个agent jar而不需要目标应用进行任何预先配置

最近在使用实现一个动态诊断调试功能时,使用到了attach机制,在每个服务器上部署一个诊断服务,由诊断服务去attach目标应用,调用VirtualMachine.attach(pid) 方法。

在IDE上启动并调用attach方法没有任何问题,但是转到测试环境上就出现了问题:

Caused by: java.lang.NoClassDefFoundError: com/sun/tools/attach/VirtualMachine
    at com.huoli.mj.diagnose.attach.AttachEntrance.attach(AttachEntrance.java:60) ~[classes!/:?]
    at com.huoli.mj.diagnose.controller.AttachController.attachByPid(AttachController.java:85) ~[classes!/:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]

经过查找资料,找到解决方法:需要在发起attach的应用启动时加入一段参数

-Xbootclasspath/a:/usr/jdk1.8.0_121/lib/tools.jar
				
:"程序包com.sun.tools.attach不存在"最简单粗暴的解决方案最近在测试JavaAgentAttach相关API,代码中有如下实现 打包编译的时候不断报错:程序包com.sun.tools.attach不存在 解决方案:pom中入tool.jar外部依赖,指定本地系统中tool.jar路径 systemPath请自行更换为自己的Java目录...
学习类装入的工作方式以及 JVM 如何帮助找出类装入问题 Lakshmi Shankar, Java 技术中心开収团队, IBM Hursley 实验室 Simon Burns (simon_burns@uk.ibm.com), Java 技术中心开収团队, IBM Hursley 实验室 简介: 类装入组件是 Java™ 虚拟机的基础。虽然开収人员一般对类装入的基础有良好的掌握,但是当问题収生时,在诊断问题和确定解决方案方面可能迓要有一定的困难。在返仹由四部分组成的系列中,Lakshmi Shankar 和 Simon Burns 讨论了在 Java 开収中可能遇到的各种类装入问题,解释了它们为什么会収生和如何解决它们。他们提供的见解有助亍理解和解决常见的 Java 异常,例如 NoClassDefFoundError 和 ClassNotFoundException,以及更有挅戓性的问题,例如类装入器约束迗反和死锁。在第 1 部分中,他们详细描述了 Java 类装入的工作方式,讨论了 JVM 中可以帮助诊断类装入问题的工具。
dependencies { classpath 'com.android.tools.build:gradle:3.0.1' // need delete in gradle3.x version classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' Module build
最近做项目遇到场景:通过前端提交的JAVA代码,创建java文件,然后再编译JAVA文件称class文件, 具体实现的细节,就不细说了,最后执行的结果能正常执行,但控制台报错: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassDefFoundError...
今天测试突然给我说我写的XX界面一点app就crash了! 纳尼,我肯定表示不服啊!怎么可能出现一点击就崩溃的情况呢,明明自己的测试了的! 然后我又用自己的测试机试了下没问题(Version:5.0.2),然后又使用crash的测试手机(Version:4.4),乖乖,居然是4.4才会出现的情况!(4.4以下没有验证哈!可能都会吧!!!) log显示: W/System.err: java.lang.NoClassDefFoundError: android/os/PersistableBundle W/System.err: at java.lang.Class.getDeclar
1、项目依赖的jar包未全部导入; 如:java.lang.NoClassDefFoundError: Could not initialize class com.esms.common.util.XmlUtil,当你去查这个类的时候发现这个类是存在,之所以抱着个错是 因为在这个类里面的方法引用了其他jar包中的类的方法,而这个被引用的这个jar包刚好缺失,所以抛出这个错。 解决办法:一层
服务注册那块调用nacos语句写错了,官方文档eider是用POST,即: [code=plain] curl -X POST "http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=user_service&ip=127.0.0.1&port=8082" [/code] Sharding-jdbc设置defaultDatasource无效问题解决和源码分析思路 xiumuzi003: 源码才是关键,要下原码看看😂😂