“É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à.
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
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que vous avez donner plein de java chemin de la classe contenant le pré-méthode main.
par exemple, comme ceci org.eclipse.anotherpckg.ObjectSizeFetcher. Deuxièmement, il doit y avoir un espace avant le nom et le retour chariot à la fin. par exemple
La dernière ligne est due à un retour chariot.
OriginalL'auteur user758867
Vous devez ajouter dans le MANIFESTE.MF:
Premain-Class: org.your.package.ObjectSizeFetcher
+ nouvelle ligneinsted
Premain-Class: ObjectSizeFetcher
OriginalL'auteur Max Gabderakhmanov
C'est un problème avec le pot de commande lui-même. pot de commande doit être utilisée avec pcm attributs à inclure personnalisé MANIFESTE.MF, sinon pot va créer un fichier et insérer son propre contenu qui ne comprennent pas l'PreMain-attribut de Classe comme nous le mentionnons dans personnalisées manifeste.mf fichier.
OriginalL'auteur maruthy