Отсутствует tools.jar в SpringTools Suite при вызове из командной строки - PullRequest
0 голосов
/ 05 февраля 2020

Я вижу следующий экран:

similar question

при запуске 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 Определена переменная среды:

enter image description here

Согласно документации Eclipse:

-vm (выполнимый, основной)

при передаче в исполняемый файл Eclipse этот параметр используется для поиска виртуальной машины Java, которая будет использоваться для запуска Eclipse. Это должен быть полный путь файловой системы к соответствующему: Java каталог jre / bin, Java исполняемый файл, Java общая библиотека (jvm.dll или libjvm.so) или файл описания Java VM Execution Environment , Если не указано, исполняемый файл Eclipse использует алгоритм поиска для поиска подходящей виртуальной машины. В любом случае исполняемый файл затем передает путь к используемой виртуальной машине в Java Main, используя аргумент -vm. Java Main затем сохраняет это значение в eclipse.vm.

Я проверил this на возможные указатели и попробовал различные варианты конфигураций, например:

  • запустить STS из файла .exe, а не из приведенного выше сценария, а затем указать рабочее пространство
  • , поместив параметр -vm в файл .ini перед -vmargs
  • , указывающим -vm в папку, содержащую java.exe вместо указанного c файла
  • , указывающего на javaw.exe вместо java.exe
  • , имеющего -vm, указывающего на каталог JRE, а не каталог JDK.
  • et c.

Та же ошибка сохраняется.

Похоже, что-то перенаправляет STS, чтобы заглянуть внутрь C:\Program Files\Java\jre1.8.0_191 вместо C:\Java\jdk1.8.0_144\bin или C:\Java\jdk1.8.0_144\jre\bin, куда я указываю.

Что здесь может быть не так?

Заранее спасибо.

ОБНОВЛЕНИЕ:

Как предложил Мартин, следующая модификация:

enter image description here

, если вызвано b y двойной щелчок по исполняемому файлу STS приводит к открытию 2 STS windows: обычного STS (теперь без начального пропущенного приглашения tools.jar) плюс этот:

enter image description here

однако при запуске через скрипт из командной строки, как и раньше, не удается открыть STS вообще:

enter image description here


ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ:

Как правильно указал Мартин в своем комментарии, есть несколько проблем с приведенным выше сценарием:

  • -vm требуется пробел после него и путь к JDK
  • , дублированный -vmargs был виновником первоначального ошибочного поведения
  • , указывающего на javaw.exe вместо java.exe, помогает скрыть второе окно .
  • -XX:MaxPermSize=256m больше не требуется в Java 8.

С учетом вышесказанного, вот что работает сейчас:

1) SpringToolSuite4.ini может остаться нетронутым, нет необходимости (хотя это возможно и работает) добавить туда путь к JDK, как указано в моем p предыдущее обновление:

  -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  

1 Ответ

1 голос
/ 06 февраля 2020

Добавление аргумента -vm в файл .ini должно работать, но вы должны аккуратно поместить его в нужное место внутри этого файла. -vm должна быть первой строкой в ​​этом файле, за которой следует дополнительная строка, указывающая на исполняемый файл java JDK. Затем третья строка должна перейти к части -startup, которая есть в вашем файле .ini.

...