Spring CLI v2.1.0.RELEASE-加密-> NoSuchMethodError

时间:2018-11-06 14:01:48

标签: spring encryption

当我跑步时:

spring encrypt totallysecretpassword --key=insanity
  

线程“主”中的异常java.lang.reflect.InvocationTargetException           在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处           在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)           在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)           在java.lang.reflect.Method.invoke(Method.java:498)           在org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)           在org.springframework.boot.loader.Launcher.launch(Launcher.java:87)           在org.springframework.boot.loader.Launcher.launch(Launcher.java:50)           在org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)   造成原因:java.lang.NoSuchMethodError:   org.springframework.cloud.cli.command.encrypt.BaseEncryptOptionHandler.option(Ljava / util / Collection; Ljava / lang / String;)Ljoptsimple / OptionSpecBuilder;           在org.springframework.cloud.cli.command.encrypt.BaseEncryptOptionHandler.options(BaseEncryptOptionHandler.java:53)           在org.springframework.boot.cli.command.options.OptionHandler.getParser(OptionHandler.java:68)           在org.springframework.boot.cli.command.options.OptionHandler.run(OptionHandler.java:83)           在org.springframework.boot.cli.command.OptionParsingCommand.run(OptionParsingCommand.java:54)           在org.springframework.boot.cli.command.CommandRunner.run(CommandRunner.java:219)           在org.springframework.boot.cli.command.CommandRunner.runAndHandleErrors(CommandRunner.java:171)           在org.springframework.boot.cli.SpringCli.main(SpringCli.java:63)           ...另外8个

我按照这里的说明重新安装了JCE:https://cloud.spring.io/spring-cloud-cli/

基本上,我想要的是: https://blog.novatec-gmbh.de/encrypted-properties-spring/

但是在1.3.2中它是相同的错误,所以我使用了最新版本...但仍然没有成功...我缺少什么?

- 没有在我的Windows框上运行2.0.8的加密,而在ubuntu框上执行该操作时,@ jtim的答案令我感到担忧!

3 个答案:

答案 0 :(得分:4)

这是spring-boot-cli的重大变化。只需等待spring-cloud-cli兼容版本的发布(新版本的request)即可。

或者您可以install没有更改的旧版本的spring-boot-cli,例如2.0.8.RELEASE

答案 1 :(得分:0)

我也碰到了这个问题,这就是我所做的,

# Step 1: Download the binaries to install (https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/)
$ wget https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/2.0.8.RELEASE/spring-boot-cli-2.0.8.RELEASE-bin.tar.gz

# Step 2: Extract the tar.gz
$ tar xvf spring-boot-cli-2.0.8.RELEASE-bin.tar.gz

# Step 3: Enable execute permissions
$ chmod +x spring-2.0.8.RELEASE/bin/spring

# Install Spring Cloud
$ spring install org.springframework.cloud:spring-cloud-cli:2.0.0.RELEASE

# Step 5: Add it to your PATH
$ cd spring-2.0.8.RELEASE/bin
$ echo "PATH=$(pwd):\$PATH" >> .bashrc or  .zshrc

这通常适用于Mac和任何基于Linux的系统。我已经在Mac和Linux Mint上亲自尝试过

输出:

$ spring encrypt totallysecretpassword --key=insanity
f5a7944890c871ef58971eeaf123bbc750727b012cce8f7072def5bf71b000fb00089e106775ac0306b5f15b8f17d233

希望这对某人有帮助。

答案 2 :(得分:0)

使用较低版本的Spring boot cli。以下配置对我有用:

Springboot CLI版本:2.1.6.RELEASE

创建系统变量

name: SPRING_HOME

value: C:\Users\zafrullahsyed\Downloads\spring-2.1.6.RELEASE

将bin文件夹添加到系统路径:%SPRING_HOME%\bin

以管理员身份打开CMD,否则不会在spring-2.1.6.RELEASE\lib\ext文件夹上创建jar

检查Spring --version

Spring CLI v2.1.6.RELEASE

然后安装sping cloud插件:

spring install org.springframework.cloud:spring-cloud-cli:2.1.0.RELEASE

spring encrypt mysecret --key foo

加密值:1c656a1a4617146a7e76d977ca5fa2cfeb0afecc5655677193f53ab43578dd4d

spring decrypt --key foo 1c656a1a4617146a7e76d977ca5fa2cfeb0afecc5655677193f53ab43578dd4d

解密值:

mysecret