通过终端使用jasypt加密简单字符串

Encryption of simple string using jasypt through terminal

我正在尝试使用 jasypt 加密一个简单的字符串。当我使用 eclipse IDE 时它工作正常,但当我尝试通过终端时出现一些问题。

Output through Eclipse IDE Screenshot

下面是我使用的代码。

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 个命令时出现一些错误。 Error Screenshot

如果我犯了一些非常基本的错误或使用了多余的代码行,请原谅并提出一些建议,因为我是 java 的新手。

欢迎使用 Whosebug!

当你用 Maven 编译你的程序时(它实际上不是一个编译器而是一个包管理器,它也可以在幕后调用 Java 编译器)Maven 负责下载和管理你的程序的依赖项使用,在本例中为 Jasypt。

然后当您尝试使用纯 java 启动程序时,运行 您的程序所必需的依赖项信息丢失了,只是因为 Maven 不再是游戏的一部分。因此,您必须给 Java 运行time 提示在哪里可以找到 Jasypt 依赖项,就像您对演示 jar 所做的那样。在编译过程中,Maven 将 Jasypt jar 存储在您的驱动器上一个名为 local Maven repository.

的文件夹中

您现在只需将此 jar 的路径添加到您的类路径,一切都会 运行:

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 库版本可能不同。)

如果你有很多依赖项,手动将它们全部添加到类路径中会变得很麻烦。在 Exec-plugin 的帮助下,Maven 也可以为您完成这项任务。不要直接启动 java 让 Maven 为你做管道:

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

您还可以查看 this thread 以了解有关此插件及其选项的更多详细信息