Spring Cloud DataFlow Local-Server 1.2.2 无法在 Windows 10 上启动
Spring Cloud DataFlow Local-Server 1.2.2 fails to startup on Windows 10
我正尝试在 link http://cloud.spring.io/spring-cloud-dataflow/#quick-start 上学习 spring 云数据流教程。
在第2步时,执行以下行
java -jar spring-cloud-dataflow-server-local-1.2.2.RELEASE.jar
导致以下异常:
2017-07-01 16:21:00.218 WARN 3224 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskService' defined in class path resource [org/springframework/cloud/dataflow/server/config/features/TaskConfiguration.class]: Unsatisfied dependency expressed through method 'taskService' parameter 5; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskLauncher' defined in class path resource [org/springframework/cloud/deployer/spi/local/LocalDeployerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'taskLauncher' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.cloud.deployer.local-org.springframework.cloud.deployer.spi.local.LocalDeployerProperties': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.deployer.spi.local.LocalDeployerProperties]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Java executable discovered via 'java.home' system property 'C:\Program Files\Java\jdk1.8.0_131\jre' is not executable or does not exist.
我认为关键是 'c:\program files\java\jdk1.8.0_131\jre' 似乎是 java 二进制文件的错误路径。我希望这是 %JRE_HOME%\bin 目录。
我写了一个小程序来转储产生以下内容的系统属性:
java.home: C:\Program Files\Java\jdk1.8.0_131\jre
我的JAVA_HOME、JRE_HOME、CLASSPATH和JDK_HOME环境变量设置如下
JAVA_HOME C:\Program Files\Java\jdk1.8.0_131
JDK_HOME %JAVA_HOME%
JRE_HOME %JAVA_HOME%\jre
CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
PATH 变量设置为 %JAVA_HOME%\bin
我已经多次重启命令提示符。
当我运行1.1.4版本的以下命令时,服务器启动没有报错:
java -jar spring-cloud-dataflow-server-local-1.1.4.RELEASE.jar
我已尝试删除 JRE_HOME 变量并将 CLASSPATH 设置为 .
更新:添加目录 c:\java.exe /s /b
的输出
c:\Program Files\Java\jdk1.8.0_131\bin\java.exe
c:\Program Files\Java\jdk1.8.0_131\jre\bin\java.exe
c:\Program Files\Java\jre1.8.0_131\bin\java.exe
c:\Program Files (x86)\Java\jre1.8.0_131\bin\java.exe
c:\ProgramData\Oracle\Java\javapath\java.exe
c:\ProgramData\Oracle\Java\javapath_target_260505593\java.exe
c:\Users\All Users\Oracle\Java\javapath\java.exe
c:\Users\All Users\Oracle\Java\javapath_target_260505593\java.exe
这是一个错误:(仅影响 1.2.2.RELEASE 并由 1.2.3.RELEASE 修复)
https://github.com/spring-cloud/spring-cloud-deployer-local/issues/58
"Work around" 解决方案是转到系统上 java 的 JRE
路径并 运行 以下命令
(其他用户请注意在命令提示符 window 中找到您的 java 路径类型 echo %JAVA_HOME%
,如果 java 中有 'jdk'确保将下面的 'cd' 命令的主路径更改为 'jre'。我们需要导航到 jre 目录而不是 jdk 我们还附加了 '\bin')
- 导航到 JRE 的 bin 目录
cd C:\Program Files\Java\jre1.8.0_131\bin (notice: in the path "jre1.8" not jdk
)
- 在同一目录中复制名为 'java' 的 'java.exe'
copy java.exe java
总结Bug/Workaround:
这个错误基本上是......开发人员期望 java 可执行文件被称为 java
而不是 java.exe
,因为它在 Windows OS。所以解决方法是复制 java.exe 并将其命名为 java 在该 JRE 的 bin 目录中...
不确定这样的东西是如何进入生产版本的……:/
此错误已在 1.2 中修复。3.RELEASE
我正尝试在 link http://cloud.spring.io/spring-cloud-dataflow/#quick-start 上学习 spring 云数据流教程。
在第2步时,执行以下行
java -jar spring-cloud-dataflow-server-local-1.2.2.RELEASE.jar
导致以下异常:
2017-07-01 16:21:00.218 WARN 3224 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskService' defined in class path resource [org/springframework/cloud/dataflow/server/config/features/TaskConfiguration.class]: Unsatisfied dependency expressed through method 'taskService' parameter 5; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskLauncher' defined in class path resource [org/springframework/cloud/deployer/spi/local/LocalDeployerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'taskLauncher' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.cloud.deployer.local-org.springframework.cloud.deployer.spi.local.LocalDeployerProperties': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.deployer.spi.local.LocalDeployerProperties]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Java executable discovered via 'java.home' system property 'C:\Program Files\Java\jdk1.8.0_131\jre' is not executable or does not exist.
我认为关键是 'c:\program files\java\jdk1.8.0_131\jre' 似乎是 java 二进制文件的错误路径。我希望这是 %JRE_HOME%\bin 目录。
我写了一个小程序来转储产生以下内容的系统属性:
java.home: C:\Program Files\Java\jdk1.8.0_131\jre
我的JAVA_HOME、JRE_HOME、CLASSPATH和JDK_HOME环境变量设置如下
JAVA_HOME C:\Program Files\Java\jdk1.8.0_131
JDK_HOME %JAVA_HOME%
JRE_HOME %JAVA_HOME%\jre
CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
PATH 变量设置为 %JAVA_HOME%\bin
我已经多次重启命令提示符。
当我运行1.1.4版本的以下命令时,服务器启动没有报错:
java -jar spring-cloud-dataflow-server-local-1.1.4.RELEASE.jar
我已尝试删除 JRE_HOME 变量并将 CLASSPATH 设置为 .
更新:添加目录 c:\java.exe /s /b
的输出c:\Program Files\Java\jdk1.8.0_131\bin\java.exe
c:\Program Files\Java\jdk1.8.0_131\jre\bin\java.exe
c:\Program Files\Java\jre1.8.0_131\bin\java.exe
c:\Program Files (x86)\Java\jre1.8.0_131\bin\java.exe
c:\ProgramData\Oracle\Java\javapath\java.exe
c:\ProgramData\Oracle\Java\javapath_target_260505593\java.exe
c:\Users\All Users\Oracle\Java\javapath\java.exe
c:\Users\All Users\Oracle\Java\javapath_target_260505593\java.exe
这是一个错误:(仅影响 1.2.2.RELEASE 并由 1.2.3.RELEASE 修复)
https://github.com/spring-cloud/spring-cloud-deployer-local/issues/58
"Work around" 解决方案是转到系统上 java 的 JRE
路径并 运行 以下命令
(其他用户请注意在命令提示符 window 中找到您的 java 路径类型 echo %JAVA_HOME%
,如果 java 中有 'jdk'确保将下面的 'cd' 命令的主路径更改为 'jre'。我们需要导航到 jre 目录而不是 jdk 我们还附加了 '\bin')
- 导航到 JRE 的 bin 目录
cd C:\Program Files\Java\jre1.8.0_131\bin
(notice: in the path "jre1.8" not jdk
)
- 在同一目录中复制名为 'java' 的 'java.exe'
copy java.exe java
总结Bug/Workaround:
这个错误基本上是......开发人员期望 java 可执行文件被称为 java
而不是 java.exe
,因为它在 Windows OS。所以解决方法是复制 java.exe 并将其命名为 java 在该 JRE 的 bin 目录中...
不确定这样的东西是如何进入生产版本的……:/
此错误已在 1.2 中修复。3.RELEASE