maven компиляция jar

336
20 декабря 2016, 23:38

Здравствуйте.Имеется java код вроде как по защите от декомпиляции indyprotectordemo Создал jar через marven

mvn compile
mvn packade

Запускаю

cmd -> java -jar IndyProtectorDemo-1.0.jar test.java test2.java

создается test2.java только пустой. В cmd имею ошибку

Exception in thread "main" java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at javaone2015.con7442.indyprotector.Demo.main(Demo.java:48)

Ошибка происходит из-за

InputStream in = Files.newInputStream(Paths.get(args[0]))

Гуглил решения так и не нашел. Пробовал sdk 1.8 и 1.7 а так же разные библиотеки asm.Но ошибки не исчезают и на выходе получаю пустой класс.Кто подскажет в чем проблема и как ее решить?

Answer 1

ClassReader из библиотеки asm принимает на вход поток байтов, содержимого откомпилированного класса.

Следовательно, вам нужно передать в качестве аргументов пути до файлов с расширением *.class

Можно доработать вашу программу, сделав компиляцию во время выполнения. Будет это выглядеть так:

JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
String fileName = arg[0];
javac.run(null, null, null, fileName);
fileName = fileName.replace(".java", ".class");
try (InputStream in = Files.newInputStream(Paths.get(fileName));
     OutputStream out = Files.newOutputStream(Paths.get(args[1]))) {
        ClassReader cr = new ClassReader(in);
        ClassWriter cw = new ClassWriter(0);
        ClassProtector cp = new ClassProtector(cw);
        cr.accept(cp, 0);
        out.write(cw.toByteArray());
 }
READ ALSO
Действие при клике на &ldquo;Читать далее&rdquo;

Действие при клике на “Читать далее”

Есть инфо-блокПри нажатии на кнопку "Читать далее" (с указателем вниз), выезжает подробный текст инфо-блока, кнопка должна менятся на "Свернуть"...

286
Как изменить размер миниатюры в fancybox?

Как изменить размер миниатюры в fancybox?

Всем добро! То ли я дурак, то ли лыжи не катятНе могу разобраться как увеличить размер миниатюры в fancybox, установленного на сайте битрикс

317
Promises. Не работает последовательность

Promises. Не работает последовательность

ЗдравствуйтеПишу код с использованием Обещаний для последовательного запуска функций

289
Загрузка больших файлов через Ajax

Загрузка больших файлов через Ajax

Всем приветПодскажите скрипт для загрузки больших файлов до 2 гб через ajax с возможность показа процента загрузки

458