2016-10-24 8 views
1

J'utilise la suie pour instrumenter un programme Java. Je sais pour ajouter l'invocation à la classe spécifique dans la suie, nous devons placer "Soot class-path" au répertoire contient cette classe, le fichier .class. Donc, je le fais dans la méthode principale de la classe principale. J'apporte l'extrait de code ci-dessousLa réception n'a pas pu trouver d'erreur de classe même Paramètre Chemin de la bibliothèque Soot

public class Main { 
public static void main(String[] args) { 
Scene.v().setSootClassPath("/home/j/IdeaProjects/Test_1/classes:/home/j/IdeaProjects/Test_1/libs/rt.jar:home/j/IdeaProjects/Test_1/libs/jce.jar"); 
    PackManager.v().getPack("jtp").add(new Transform("jtp.RetIns", new ExIns())); 
.... 

Mais quand je veux utiliser la classe « Insop » qui se trouve dans le dossier classes, par le code suivant dans la méthode Exins:

static SootClass Ins; 
static 
{ 
    Ins= Scene.v().loadClassAndSupport("Insop"); 
} 

j'obtiens l'erreur

Caused by: java.lang.RuntimeException: couldn't find class: Insop (is your soot-class-path set properly?) 

Je devrais mentionner que j'utilise ubuntu 14.4 32 bits et je cours le code sur intellij. Je ne peux pas trouver quelle est mon erreur. pourrais-tu m'aider s'il te plaît.

Répondre

1

Je trouve enfin le problème. Je ne sais pas pourquoi, mais je devrais définir "chemin de classe de suie" avec un chemin relatif. Pour mon projet par exemple il devrait définir comme suit:

Scene.v().setSootClassPath("classes:libs/rt.jar:libs/jce.jar");