java - Maven编译时找不到sun.jvm.hotspot

标签 java maven jvm

我正在尝试在我的 Java 程序中使用 sum.jvm 工具。它允许我使用 sun.jvm.* 进行编程,但是当我尝试编译它(清理、安装)时,我得到了这个:

error: package sun.jvm.hotspot.memory does not exist

基本上,无论我在哪里使用 sun.jvm 引用,都会出现大量此类错误。

我四处看了很多,到目前为止我没能找到其他人遇到这个问题......有谁知道解决这个问题的办法吗?

我正在尝试创建一个工具子类来扫描 JVM 中的某些字符串,我发现我需要使用 sun.jvm,但现在它不起作用。

这是我的方法:

@Override
public void run() {
    SystemDictionary dict = VM.getVM().getSystemDictionary();
    InstanceKlass stringKlass = (InstanceKlass) dict.find("java/lang/String", null, null);
    OopField valueField = (OopField) stringKlass.findField("value", "[C");

    long[] stats = new long[2];
    VM.getVM().getStringTable().stringsDo(s -> {
        s.printValueOn(System.out);
        System.out.println();
        stats[0]++;
        stats[1] += s.getObjectSize() + valueField.getValue(s).getObjectSize();
    });
}

我用来在工具子类中进行测试。在我的项目中任何引用 sun.jvm 的地方,当我尝试使用 Maven 进行全新安装时,它都会出现该错误。它使用 IntelliJ 的内置编译器构建,而不是 Maven。

我还尝试重新导入 Maven,甚至重新安装 IntelliJ 并使用全新安装进行编译。

它发生在所有 sun.jvm.hotspot.* 路径上。

谢谢, 埃鲁瓦

最佳答案

$JAVA_HOME/lib/sa-jdi.jar 添加到 CLASSPATH。

关于java - Maven编译时找不到sun.jvm.hotspot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42651694/

相关文章:

performance - 在 Linux 机器上关闭 Tomcat 后内存未释放

java - 共享 jar 和 noclassdeffound java

java - JSP 和 Python 可以一起用于同一个数据库吗?

java - 检查 Controller 中的业务逻辑以提供更好的错误消息

Java控制台日志如何隐藏方法执行

java - 使用现有的 Servlet 类或 JSP - Servlet 列表为空

java - 如何放置 jar 文件并使用 FileInputStream 读取它

windows - Docker-Spring Boot App-Windows上的Hello World

Java 应用程序使用系统中的最大可用内存

java - 关于Java应用程序的内存使用