Шифрование простой строки с использованием jasypt через терминал - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь зашифровать простую строку с помощью jasypt. Он работает правильно, когда я использую Eclipse IDE, но есть некоторые проблемы, когда я пытаюсь через терминал.

Вывод через Eclipse IDE Снимок экрана

Ниже приведен код, который я использую .

package com.jasypt.encryption.demo;
import org.jasypt.util.text.BasicTextEncryptor;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class BasicDemo {

    public static void main(String[] args) throws IOException {
        String secretkey = "home@123";
        String message = "This is a confidential message. Be Careful !!";
        BasicTextEncryptor basicTextEncryptor = new BasicTextEncryptor();
        basicTextEncryptor.setPassword(secretkey);
        String encrMess = basicTextEncryptor.encrypt(message);
        System.out.println(encrMess);
        String decrMess =basicTextEncryptor.decrypt(encrMess);
        System.out.println(decrMess);
   }
}

Я перехожу к папке, содержащей файл pom. xml, и ввожу следующие команды в терминал

1) mvn package
2) mvn install
3) java -cp target/demo-0.0.1-SNAPSHOT.jar com.jasypt.encryption.demo.BasicDemo

Я получаю сообщение BUILD SUCCESS, и файл jar успешно создан, но Я получаю некоторую ошибку, когда я запускаю 3-ю команду. Снимок экрана ошибки

Пожалуйста, извините и предложите что-нибудь, если я делаю какую-то очень основную ошибку c или использую избыточные строки кода, поскольку я новичок в java.

1 Ответ

0 голосов
/ 17 марта 2020

Добро пожаловать в StackOverflow!

Когда вы компилируете свою программу с помощью Maven (который на самом деле не компилятор, а менеджер пакетов, который также может вызвать компилятор Java за кулисами), Maven берет на себя загрузку и управление зависимостями, которые использует ваша программа, в данном случае это Jasypt.

Когда вы затем пытаетесь запустить программу с обычным java, информация о зависимостях, необходимых для запуска вашей программы, теряется, просто потому что Maven больше не является частью игры. Поэтому вы должны дать во время выполнения Java подсказку, где найти зависимость Jasypt, так же, как вы делали с вашей демонстрационной флягой. Во время процесса компиляции Maven сохранял Jarspt jar на вашем диске в папке с именем local Maven repository .

Теперь вы можете просто добавить путь к этому jar в classpath, и все будет работать :

java -cp target/demo-0.0.1-SNAPSHOT.jar:<path to your Maven repository>/org/jasypt/jasypt/1.9.3/jasypt-1.9.3.jar com.jasypt.encryption.demo.BasicDemo

(Версия библиотеки Jasypt может отличаться на вашем компьютере.)

Если у вас много зависимостей, будет сложно добавить их все вручную в путь к классам. Maven также может позаботиться об этой задаче с помощью плагина Exe c . Вместо запуска java напрямую позвольте Maven выполнить сантехнику за вас:

mvn exec:java -Dexec.mainClass="com.jasypt.encryption.demo.BasicDemo"

Вы также можете проверить эту тему для получения более подробной информации об этом плагине и его параметрах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...