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 版本中遇到了同样的问题。我执行了以下步骤来让它工作:
- 我从根目录克隆了项目 (https://github.com/jasypt/jasypt.git)
- 我在
/jasypt/
目录下使用maven编译打包了项目(这是脚本使用的项目)
- 我在
bin
目录旁边创建了一个 lib
,然后将生成的 jar 文件复制到其中
- 然后我运行又encrypt.bat
这样我就解决了问题
当您在 windows 机器上 运行 时,调用 encrypt.bat/decrypt.bat 文件而不是 .sh 文件。
我在 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 版本中遇到了同样的问题。我执行了以下步骤来让它工作:
- 我从根目录克隆了项目 (https://github.com/jasypt/jasypt.git)
- 我在
/jasypt/
目录下使用maven编译打包了项目(这是脚本使用的项目) - 我在
bin
目录旁边创建了一个lib
,然后将生成的 jar 文件复制到其中 - 然后我运行又encrypt.bat
这样我就解决了问题
当您在 windows 机器上 运行 时,调用 encrypt.bat/decrypt.bat 文件而不是 .sh 文件。