【发布时间】:2011-01-17 00:21:25
【问题描述】:
当我尝试运行 java 程序 (java -javaagent:size.jar ObjectSizeTest) 时,我收到以下错误:
Failed to load Premain-Class manifest attribute from D:\workspace\ObjectSizeTest\size.jar
Error occurred during initialization of VM
agent library failed to init: instrument
这是 ObjectSizeTest 的代码:
public class ObjectSizeTest {
public static void main(String[] args) {
String s = new String("sai");
System.out.println(ObjectSizeFetcher.getObjectSize(s));
}
}
MANIFEST.MF(用于 size.jar):
Manifest-Version: 1.0
Created-By: 1.5.0_18 (Sun Microsystems Inc.)
Premain-Class: ObjectSizeFetcher
这是 ObjectSizeFetcher 的代码:
import java.lang.instrument.Instrumentation;
public class ObjectSizeFetcher {
private static Instrumentation instrumentation;
public static void premain(String args, Instrumentation inst) {
instrumentation = inst;
}
public static long getObjectSize(Object o) {
return instrumentation.getObjectSize(o);
}
}
【问题讨论】:
-
您收到以下错误...并且...? (你没有问问题。)
-
size.jar 的来源在哪里?我想我们需要这些。
-
你能发布 Manifest 文件吗,我认为你在 manifest 文件中的 Premain-Class 不完全合格或者找不到那个类。
-
我解决了这个问题。 manifest.mf 文件在 Premain-Class 之前有一个空格,这不是必需的
-
我和 JaCoCo 有过这个。原因是它的 Maven jar 里面有 jacocoagent.jar。所以我需要做依赖:解压到一个 tmp 目录并从那里使用。
标签: java instrumentation agent