cmd 中的 jasypt:找不到主要 class

jasypt in cmd: cannot find main class

我在 Windows 7 x64 cmd 中使用 jasypt 1.9.2。这里是 encrypt.bat 内容:

ECHO ON


set SCRIPT_NAME=encrypt.bat
set EXECUTABLE_CLASS=org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI
set EXEC_CLASSPATH=.
if "%JASYPT_CLASSPATH%" == "" goto computeclasspath
set EXEC_CLASSPATH=%EXEC_CLASSPATH%;%JASYPT_CLASSPATH%

:computeclasspath
IF "%OS%" == "Windows_NT" setlocal ENABLEDELAYEDEXPANSION
FOR %%c in (%~dp0lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%%c
IF "%OS%" == "Windows_NT" setlocal DISABLEDELAYEDEXPANSION

set JAVA_EXECUTABLE=java
if "%JAVA_HOME%" == "" goto execute
set JAVA_EXECUTABLE="%JAVA_HOME%\bin\java"


:execute
%JAVA_EXECUTABLE% -classpath %EXEC_CLASSPATH% %EXECUTABLE_CLASS% %SCRIPT_NAME% %*

我遇到了这个错误(我也试过 cd /d [the dir where encrypt.bat is located] 但错误仍然存​​在):

错误信息指出 org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI 的主要 class 找不到。我不明白这一点。我试图更改系统变量中的 JAVA_HOME 值,但没有成功。

我终于再次下载了原始版本并且可以使用。似乎我在尝试编辑 encrypt.bat 时搞砸了……我注意到了这个区别:

使用 @echo on,我在工作版本中看到此输出:

C:\Users\myname>FOR %c in (C:\Users\myname\Documents\[APP]\jasypt-1.9.2-dist_new\bin\..\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%c

在我的回答中我看到了这个:

C:\Users\myname>FOR %c in (C:\Users\myname\Documents\[APP]\jasypt-1.9.2-dist_new\bin\lib\*.jar) DO set EXEC_CLASSPATH=!EXEC_CLASSPATH!;%c 

注意lib前的..

另外:不要将 jaspyt 放在带有 space 的路径中!它也会导致错误,即使有引号。

当我将解压缩的 jasypt-1.9.2 文件夹放入 Program Files 时,我也遇到了同样的问题。您需要将 jasypt-1.9.2 文件夹移动到 C: 驱动器。您应该能够毫无问题地加密字符串。

我在 1.9.3 版本中遇到了同样的问题。我执行了以下步骤来让它工作:

  1. 我从根目录克隆了项目 (https://github.com/jasypt/jasypt.git)
  2. 我在/jasypt/目录下使用maven编译打包了项目(这是脚本使用的项目)
  3. 我在 bin 目录旁边创建了一个 lib,然后将生成的 jar 文件复制到其中
  4. 然后我运行又encrypt.bat

这样我就解决了问题

当您在 windows 机器上 运行 时,调用 encrypt.bat/decrypt.bat 文件而不是 .sh 文件。