我必须通过安装在 Windows 计算机上的 JProfiler 远程分析来监视安装在 Linux 计算机上的 vertx 服务器。在我的 Linux 机器上,为了使 JVM 准备好进行分析,我执行了以下操作来运行 jpenable:
- 已下载 https://download-gcdn.ej-technologies.com/jprofiler/jprofiler_linux_9_2_1.tar.gz .
- 将其解压为 tar -zxvf jprofiler_linux_9_2_1.tar.gz
已执行 jprofiler9/bin/jpenable。由于只有一个进程正在运行,即我的 vertx 服务器,因此它是自动选择的。提示选择分析模式,如下所示:
请选择分析模式:
GUI模式(附加JProfiler GUI)[1,Enter]
离线模式(使用配置文件设置分析设置)[2]当我选择 1 并按 Enter 时,它会引发以下异常:
java.lang.ExceptionInInitializerError
在 java.net.ServerSocket.setImpl(ServerSocket.java:303)
在 java.net.ServerSocket.(ServerSocket.java:245)
在 java.net.ServerSocket.(ServerSocket.java:143)
在 com.ejt.framework.g.ab.b(ejt:30)
在 com.ejt.framework.g.ab.a(ejt:13)
在 com.jprofiler.cli.EnableApplication.l(ejt:141)
在 com.jprofiler.cli.EnableApplication.a(ejt:131)
在 com.jprofiler.cli.EnableApplication.h(ejt:95)
在 com.jprofiler.cli.b.a(ejt:26)
在 com.jprofiler.cli.EnableApplication.main(ejt:272)
在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:65)
在 com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:57)
引起原因:java.lang.NullPointerException
在 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1847)
在 java.lang.Runtime.loadLibrary0(Runtime.java:871)
在 java.lang.System.loadLibrary(System.java:1124)
在 java.net.AbstractPlainSocketImpl$1.run(AbstractPlainSocketImpl.java:84)
在 java.net.AbstractPlainSocketImpl$1.run(AbstractPlainSocketImpl.java:82)
在 java.security.AccessController.doPrivileged( native 方法)
在 java.net.AbstractPlainSocketImpl.(AbstractPlainSocketImpl.java:81)
... 16 个以上
不知道是什么导致了这个异常。我用谷歌搜索了一下,没有发现任何人面临同样的问题和解决方案。谁能帮忙找出导致此异常的原因。
注意:Linux 机器上安装的 Java:
openjdk版本“1.8.0_242”
OpenJDK 运行时环境(版本 1.8.0_242-b08)
OpenJDK 64 位服务器虚拟机(版本 25.242-b08,混合模式)
最佳答案
此异常是由 8u242 中的更改引起的,该更改又被 8u252 取消。对于旧版本的 JProfiler,您必须使用 8u242 以外的 JRE。您可以通过定义环境变量 INSTALL4J_JAVA_HOME_OVERRIDE
来做到这一点。
JProfiler 11.1.1+ 也适用于 8u242。
关于java - JProfiler9无法执行jpenable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61302762/