sunwu51 / JVMByteSwapTool

jvm diagnose tool by swapping bytecode
MIT License
24 stars 9 forks source link

工具类启动显示WindowsAttachProvider不能被初始化 #24

Closed yuyao52769 closed 1 week ago

yuyao52769 commented 2 weeks ago

按照b站教程,先启动了一个自定义的web的jar,然后启动swapper,但是java.util.ServiceConfigurationError: com.sun.tools.attach.spi.AttachProvider: Provider sun.tools.attach.WindowsAttachProvider could not be instantiated,目录也没有显示任何在运行的java进程,不知道咋回事。(还有另外一个问题我想要请教一下,我的电脑的java.home设置的就是C:\Program Files\Java\jdk-1.8\jre,但是一启动swapper,java.home就会自动变成 C:\Program Files\Java\jre-1.8\,导致启动报错,我只能去修改swapper的源代码了。) Snipaste_2024-07-07_15-50-18 java-home-2 java-home-3

sunwu51 commented 1 week ago

应该是你的java指令用的就是jre下面的,你可以cmd运行where java看下。这里有个误区是环境变量JAVA_HOME和进程的属性java.home不是一个东西,后者就是你从哪里启动的,或者说java这个指令来自哪。

        System.out.println("java.home: " + System.getProperty("java.home"));
        System.out.println("JAVA_HOME: " + System.getenv("JAVA_HOME"));

也可以通过java -Djava.home=xxxx -jar xxx.jar修改propery的值。

你也可以尝试用jdk下的java指令的全路径试试,看是否验证这个说法。

yuyao52769 commented 1 week ago

感谢大佬回答,现在可以啦!

sunwu51 commented 1 week ago

感谢大佬回答,现在可以啦!

客气啦,正好最近在用asm重写原来的javassist的实现逻辑,今天正好修复了一些细节,更新了前端页面,发布了0.0.4-fix版本。前一个不带fix的可能有ASM changeResult的时候的问题。