Как установить путь хранилища ключей в моей Java-программе в сценарии PowerShell или CMD? - PullRequest
1 голос
/ 05 июля 2019

Мы используем CMD для вызова скрипта Powershell. В сценарии powershell вызывается Java-программа. Оба файла находятся в одном каталоге. В этом каталоге также находится файл хранилища ключей (zzzz.keystore), который должен использоваться программой Java. Я знаю, что это можно сделать через -Djavax.net.ssl.trustStore =

Я использовал много способов установки пути, но все они возвращают ошибку: «Не удалось найти или загрузить основной класс .net.ssl.trustStore = zzzz.keystore»

Это в системе Windows. Я не уверен, должен ли я установить что-то в cmd, который вызывает скрипт powershell, чтобы он работал. Пожалуйста посоветуй.

Я нашел этот вопрос: java SSL и cert keystore , но нет явного примера пути, заданного в windows. Я использовал эти способы для добавления пути в сценарий powershell, но ни один из них не работает:

& java -Djavax.net.ssl.trustStore=zzzz.keystore com.router.router.router.Router

& java -Djavax.net.ssl.trustStore="zzzz.keystore" com.router.router.router.Router

& java -Djavax.net.ssl.trustStore="C:/path/to/file/zzzz.keystore" com.router.router.router.Router

& java -Djavax.net.ssl.trustStore="C://path//to//file//zzzz.keystore" com.router.router.router.Router

& java -Djavax.net.ssl.trustStore="C:\\path\\to\\file\\zzzz.keystore" com.router.router.router.Router

& java -Djavax.net.ssl.trustStore=C:/path/to/file/zzzz.keystore com.router.router.router.Router

& java -Djavax.net.ssl.trustStore=C://path//to//file//zzzz.keystore com.router.router.router.Router

Файл Cmd содержит:

SET CLASSPATH=.\yyyyy.jar
powershell .\startscript.ps1

startscript.ps1

& java followed by script as shown above followed by parameters for Java object

Я ожидаю, что Java будет работать без ошибок. Я получаю снова и снова java.exe: Ошибка: не удалось найти или загрузить основной класс .net.ssl.trustStore = zzzz.ke ystore

Я знаю, что хранилище ключей хорошо, так как оно используется в других сценариях, где все устанавливается и вызывается в сценарии cmd, при этом не используется PowerShell.

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Изменен код в Powershell на:

& java '-Djavax.net.ssl.trustStore="zzzz.keystore"' com.router.router.router.Router

Теперь Java-программа работает без проблем

0 голосов
/ 05 июля 2019

Это потому, что PowerShell видит - перед переключателем java D и думает «о, имя параметра».

Запретить PowerShell анализировать его как параметр команды с --%:

& java --% -Djavax.net.ssl.trustStore="C:\\path\\to\\file\\zzzz.keystore" com.router.router.router.Router

или путем цитирования или группировки строк аргумента:

& java '-Djavax.net.ssl.trustStore="C:\\path\\to\\file\\zzzz.keystore"' com.router.router.router.Router
# or 
& java @('-Djavax.net.ssl.trustStore="C:\\path\\to\\file\\zzzz.keystore"', 'com.router.router.router.Router')
...