Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mc 命令一直报错Memory compiler error, exception message: null, please check $HOME/logs/arthas/arthas.log for more details. #799

Closed
1 task
longtong99 opened this issue Aug 6, 2019 · 9 comments

Comments

@longtong99
Copy link

  • 我已经在 issues 里搜索,没有重复的issue。

环境信息

centos7
jdk1.8
arthas3.1.1

重现问题的步骤

1.执行mc -c 49c2faae /root/TestController.java
2.报错

java.lang.NullPointerException: null
	at com.taobao.arthas.compiler.DynamicCompiler.<init>(DynamicCompiler.java:35) ~[arthas-core.jar:3.1.1]
	at com.taobao.arthas.core.command.klass100.MemoryCompilerCommand.process(MemoryCompilerCommand.java:92) ~[arthas-core.jar:3.1.1]
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82) [arthas-core.jar:3.1.1]
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18) [arthas-core.jar:3.1.1]
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111) [arthas-core.jar:3.1.1]
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108) [arthas-core.jar:3.1.1]
	at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:370) [arthas-core.jar:3.1.1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_222]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_222]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_222]

实际操作上只要运行mc命令无论怎么执行都报这个错,就没有成功过,求高人指点

@hengyunabc
Copy link
Collaborator

https://github.com/alibaba/arthas/blob/arthas-all-3.1.1/memorycompiler/src/main/java/com/taobao/arthas/compiler/DynamicCompiler.java#L35

你的jdk加载这个 ToolProvider.getSystemJavaCompiler(); 失败了,可能不是完整的。

@longtong99
Copy link
Author

我重启了下也不可以,这个要怎么处理呢@hengyunabc

@longtong99
Copy link
Author

@hengyunabc 问题解决了,感谢老哥的提醒,去网上ToolProvider.getSystemJavaCompiler();查询这个加载失败是因为jre下没有对应的tools.jar,然后我试了试,按照网上的方法不好使。仔细看了启动日志,发现arthas用的jdk和环境的jdk不是同一个(项目用的centos7自带的),arthas用的环境配置,然后我卸载了自带的jdk,就可以了

@hengyunabc hengyunabc added this to the 3.1.2 milestone Aug 6, 2019
@vimilai
Copy link

vimilai commented Sep 9, 2019

@hengyunabc 问题解决了,感谢老哥的提醒,去网上ToolProvider.getSystemJavaCompiler();查询这个加载失败是因为jre下没有对应的tools.jar,然后我试了试,按照网上的方法不好使。仔细看了启动日志,发现arthas用的jdk和环境的jdk不是同一个(项目用的centos7自带的),arthas用的环境配置,然后我卸载了自带的jdk,就可以了

@longtong99 一定要卸载自带的jdk是什么意思,我用的就是环境的jdk 启动的/opt/jdk1.7.0_79/bin/java -jar arthas-boot.jar 24494
然后执行 mc /root/ScenicSuppGoodsServiceImpl.java
Memory compiler error, exception message: Can not load JavaCompiler from javax.tools.ToolProvider#getSystemJavaCompiler(), please confirm the application running in JDK not JRE., please check $HOME/logs/arthas/arthas.log for more details.

@hengyunabc
Copy link
Collaborator

@vimilai #820

@vimilai
Copy link

vimilai commented Sep 9, 2019

@vimilai #820

@hengyunabc 我能启动arthas 但是执行 mc /root/ScenicSuppGoodsServiceImpl.java 报错,需要怎么操作,还要安装jdk?默认的目录?我们机器上已经有jdk了?目录在/opt/jdk1.7.0_79/bin/java

lzc-alioo pushed a commit to lzc-alioo/arthas that referenced this issue May 22, 2020
@iambiglee
Copy link

@hengyunabc Hello , 我在 https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=arthas-advanced 该网站学习的时候 在Step 9 的时候, 运行至
mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp

网站也报错[arthas@23]$ mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp
Memory compiler error, exception message: --classLoaderClass (No such file or directory), please check $HOME/logs/arthas/arthas.log for more details.

想问一下, 是测试服务器环境配置的哪里不对吗?

@hengyunabc
Copy link
Collaborator

@hengyunabc Hello , 我在 https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=arthas-advanced 该网站学习的时候 在Step 9 的时候, 运行至
mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp

网站也报错[arthas@23]$ mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp
Memory compiler error, exception message: --classLoaderClass (No such file or directory), please check $HOME/logs/arthas/arthas.log for more details.

想问一下, 是测试服务器环境配置的哪里不对吗?

这个是新的参数,还没有发版本,可以先用 -c 参数。

@KeepMovingCC
Copy link

KeepMovingCC commented Sep 4, 2020

我在本地windows环境用java -jar xx启动的应用和arthas(版本3.4.0),成功attach。使用mc -c xx xx.java -d xx时也报了这个错,please confirm the application running in JDK not JRE。
image

image

解决办法是:
1)将{jdk}/lib下的tool.jar文件复制到{jdk}/jre/lib
2)进入jre/bin目录,用java.exe -jar xx分别启动应用和arthas
这两步做完就OK了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants