通过命令行调用时,SpringTools Suite 中缺少 tools.jar
Missing tools.jar in SpringTools Suite when invoking via command line
我看到以下屏幕:
STS 通过脚本启动时:
start /B C:\"Program Files"\SpringTools4\sts-4.5.0.RELEASE\SpringToolSuite4.exe -data %~dp0 -clean -showlocation -vmC:\Java\jdk1.8.0_144\bin\java.exe -vmargs -Xmx1024m -XX:MaxPermSize=256m -vmargs -javaagent:lombok.jar
这是我的 SpringToolSuite4.ini
:
-startup
plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1100.v20190907-0426
-product
org.springframework.boot.ide.branding.sts4
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-javaagent:C:\Program Files\SpringTools4\sts-4.5.0.RELEASE\lombok.jar
JAVA_HOME
环境变量定义:
根据 Eclipse 文档:
-vm (Executable, Main)
when passed to the Eclipse executable, this option is used to locate the Java VM to use to run
Eclipse. It should be the full file system path to an appropriate:
Java jre/bin directory, Java Executable, Java shared library (jvm.dll
or libjvm.so), or a Java VM Execution Environment description file.
If not specified, the Eclipse executable uses a search algorithm to
locate a suitable VM. In any event, the executable then passes the
path to the actual VM used to Java Main using the -vm argument. Java
Main then stores this value in eclipse.vm.
我检查了 可能的指针并尝试了不同的配置变体,即:
- 从其 .exe 文件启动 STS,而不是从上面的脚本启动,然后指定工作space
- 将
-vm
选项放入 .ini
文件中 -vmargs
之前
- 将
-vm
指向包含 java.exe
的文件夹而不是那个特定文件
- 指向
javaw.exe
而不是 java.exe
- 让
-vm
指向 JRE 目录而不是 JDK 目录。
- 等等
同样的错误仍然存在。
看起来有些东西将 STS 重定向到 C:\Program Files\Java\jre1.8.0_191
内部,而不是我指向的 C:\Java\jdk1.8.0_144\bin
或 C:\Java\jdk1.8.0_144\jre\bin
。
这里可能有什么问题?
提前致谢。
更新:
按照 Martin 的建议,进行以下修改:
如果通过双击 STS 可执行文件调用,将导致打开 2 个 STS windows:一个普通的 STS(现在没有初始丢失的 tools.jar
提示)加上这个:
然而,当 运行 通过命令行脚本时,和以前一样,完全无法打开 STS:
最终解决方案:
正如 Martin 在他的评论中正确指出的那样,上述脚本存在几个问题:
-vm
后需要一个 space 和 JDK 的路径
- 重复
-vmargs
是导致初始错误行为的罪魁祸首
- 指向
javaw.exe
而不是 java.exe
有助于隐藏第二个 window。
-XX:MaxPermSize=256m
在 Java 下不再需要 8.
考虑到上述情况,以下是现在的工作方式:
1) SpringToolSuite4.ini
可以保持完整,没有必要(尽管它是可能的并且可以工作)添加到 JDK 的路径,正如我之前更新中指出的那样:
-startup
plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1100.v20190907-0426
-product
org.springframework.boot.ide.branding.sts4
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-javaagent:C:\Program Files\SpringTools4\sts-4.5.0.RELEASE\lombok.jar
2) 现在可以通过以下方式成功调用 STS(在 Windows 上):
start /B C:\"Program Files"\SpringTools4\sts-4.5.0.RELEASE\SpringToolSuite4.exe -data %~dp0 -clean -showlocation -vm C:\Java\jdk1.8.0_144\bin\java.exe -vmargs -Xmx1024m
将 -vm
arg 添加到 .ini
文件应该可行,但您需要小心地将其放入该文件内的正确位置。 -vm
必须是该文件的第一行,后面跟着一个额外的 like 指向 JDK 的 java 可执行文件。然后第三行应该继续你的 .ini
文件中的 -startup
部分。
我看到以下屏幕:
STS 通过脚本启动时:
start /B C:\"Program Files"\SpringTools4\sts-4.5.0.RELEASE\SpringToolSuite4.exe -data %~dp0 -clean -showlocation -vmC:\Java\jdk1.8.0_144\bin\java.exe -vmargs -Xmx1024m -XX:MaxPermSize=256m -vmargs -javaagent:lombok.jar
这是我的 SpringToolSuite4.ini
:
-startup
plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1100.v20190907-0426
-product
org.springframework.boot.ide.branding.sts4
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-javaagent:C:\Program Files\SpringTools4\sts-4.5.0.RELEASE\lombok.jar
JAVA_HOME
环境变量定义:
根据 Eclipse 文档:
-vm (Executable, Main)
when passed to the Eclipse executable, this option is used to locate the Java VM to use to run Eclipse. It should be the full file system path to an appropriate: Java jre/bin directory, Java Executable, Java shared library (jvm.dll or libjvm.so), or a Java VM Execution Environment description file. If not specified, the Eclipse executable uses a search algorithm to locate a suitable VM. In any event, the executable then passes the path to the actual VM used to Java Main using the -vm argument. Java Main then stores this value in eclipse.vm.
我检查了
- 从其 .exe 文件启动 STS,而不是从上面的脚本启动,然后指定工作space
- 将
-vm
选项放入.ini
文件中-vmargs
之前
- 将
-vm
指向包含java.exe
的文件夹而不是那个特定文件 - 指向
javaw.exe
而不是java.exe
- 让
-vm
指向 JRE 目录而不是 JDK 目录。 - 等等
同样的错误仍然存在。
看起来有些东西将 STS 重定向到 C:\Program Files\Java\jre1.8.0_191
内部,而不是我指向的 C:\Java\jdk1.8.0_144\bin
或 C:\Java\jdk1.8.0_144\jre\bin
。
这里可能有什么问题?
提前致谢。
更新:
按照 Martin 的建议,进行以下修改:
如果通过双击 STS 可执行文件调用,将导致打开 2 个 STS windows:一个普通的 STS(现在没有初始丢失的 tools.jar
提示)加上这个:
然而,当 运行 通过命令行脚本时,和以前一样,完全无法打开 STS:
最终解决方案:
正如 Martin 在他的评论中正确指出的那样,上述脚本存在几个问题:
-vm
后需要一个 space 和 JDK 的路径
- 重复
-vmargs
是导致初始错误行为的罪魁祸首 - 指向
javaw.exe
而不是java.exe
有助于隐藏第二个 window。 -XX:MaxPermSize=256m
在 Java 下不再需要 8.
考虑到上述情况,以下是现在的工作方式:
1) SpringToolSuite4.ini
可以保持完整,没有必要(尽管它是可能的并且可以工作)添加到 JDK 的路径,正如我之前更新中指出的那样:
-startup
plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1100.v20190907-0426
-product
org.springframework.boot.ide.branding.sts4
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-javaagent:C:\Program Files\SpringTools4\sts-4.5.0.RELEASE\lombok.jar
2) 现在可以通过以下方式成功调用 STS(在 Windows 上):
start /B C:\"Program Files"\SpringTools4\sts-4.5.0.RELEASE\SpringToolSuite4.exe -data %~dp0 -clean -showlocation -vm C:\Java\jdk1.8.0_144\bin\java.exe -vmargs -Xmx1024m
将 -vm
arg 添加到 .ini
文件应该可行,但您需要小心地将其放入该文件内的正确位置。 -vm
必须是该文件的第一行,后面跟着一个额外的 like 指向 JDK 的 java 可执行文件。然后第三行应该继续你的 .ini
文件中的 -startup
部分。