21

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);
    }
}
4

4 に答える 4

10

pre-main メソッドを含むクラスの完全な Java パスを指定していることを確認してください。たとえば、この org.eclipse.anotherpckg.ObjectSizeFetcher. 次に、名前の前にスペースが必要で、最後にキャリッジ リターンが必要です。例えば

Manifest-Version: 1.0
Created-By: 1.5.0_18 (Sun Microsystems Inc.)
Premain-Class: org.eclipse.package.ObjectSizeFetcher

最後の行はキャリッジ リターンによるものです。

于 2011-09-01T12:11:29.623 に答える
6

MANIFEST.MF に追加する必要があります。

Premain-Class: org.your.package.ObjectSizeFetcher+改行

挿入した

Premain-Class: ObjectSizeFetcher

于 2016-06-04T12:46:14.667 に答える
0

問題を実行java size.jar ObjectSizeTestするだけで、transformer クラスを持つ Java エージェントが原因で発生します。

于 2019-05-15T08:26:58.290 に答える