“Échec du chargement de Premain-Classe manifeste attribut” tout en essayant d'obtenir la taille d'un objet à l'aide de java agent

Lorsque j'essaie d'exécuter un programme java ( java -javaagent:size.jar ObjectSizeTest ), je reçois le message d'erreur suivant:

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

Ici est ObjectSizeTest code:

public class ObjectSizeTest {
    public static void main(String[] args) {
        String s = new String("sai");
        System.out.println(ObjectSizeFetcher.getObjectSize(s));
    }
}

MANIFESTE.MF (pour size.jar):

Manifest-Version: 1.0
Created-By: 1.5.0_18 (Sun Microsystems Inc.)

Premain-Class: ObjectSizeFetcher

et voici ObjectSizeFetcher code:

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);
    }
}
Vous obtenez le message d'erreur suivant...et...? (Vous n'avez pas à poser une question.)
où sont les sources pour size.jar? Je suppose que nous avons besoin de ces.
Pouvez-vous poster le fichier de Manifeste, je pense que votre Premain de la Classe dans le fichier manifeste n'est pas pleinement qualifié ou il est impossible de trouver la classe.
J'ai résolu le problème. Le manifeste.mf fichier a un espace avant le Premain de Classe qui n'est pas nécessaire
J'ai eu cela avec JaCoCo. La raison en était qu'il est Maven pot a l'jacocoagent.jar emballé à l'intérieur. J'ai donc besoin de faire de dépendance:décompresser un tmp dir et utilisation à partir de là.

OriginalL'auteur java_geek | 2010-02-15