首页 > 解决方案 > 如何在 Powershell 中运行 Java 命令

问题描述

我正在尝试在 powershell 脚本中运行命令。

我可以在 cmd 中运行下面的代码,我得到了想要的结果,因为 jar 文件是这样构建的,我无法更改它。

在 CMD 中调用 jar,如下所示:

java -jar session_reciever.jar "20190423-SESSION" "SESSION_RECIEVED_ACTUAL_TIME$2019-04-23 16:52:05"

第一个参数是会话名称,第二个是列名(在数据库中)和时间值,用 $ 分隔

结果是它将更新为列“SESSION_RECIEVED_ACTUAL_TIME”和会话值“20190423-SESSION”传递的时间值

但是在 Windows Powershell 中我没有达到这个结果。

$script_path    = $myinvocation.invocationname;      
$script_folder  = split-path $script_path -parent;
$factory_home = split-path $script_folder -parent;
$COPS_factory_home = split-path $factory_home -parent;
$COPS_factory_root = split-path $COPS_factory_home -parent;

$session_processor_dir=$COPS_factory_home+'\FACTORY_DISTRIBUTOR\bin\session_processor'
echo $session_processor_dir
$session='20190423-SESSION' ### remove this later

$java_bin=$COPS_FACTORY_HOME+'\FACTORY_DISTRIBUTOR\bin\jdk1.7.0_67\jre\bin'

        $nas_time = '2019-04-23 18:34:06' ##(Get-content $nas_time_file)

$session_nas_qe =$java_bin+'\java.exe -jar '+$session_processor_dir+'\session_reciever.jar "+$session+" "+SESSION_RECIEVED_ACTUAL_TIME+$+$nas_time+"'
                echo $session_nas_qe 
                Invoke-expression $session_nas_qe

这个的输出是:

\\COPS_FACTORY\FACTORY_DISTRIBUTOR\bin\session_processor
\\COPS_FACTORY\FACTORY_DISTRIBUTOR\bin\jdk1.7.0_67\jre\bin\java.exe -jar \\Vcn.ds.volvo.net\appl-fs\ERP-CDEVM\PDMLINK-CDE-MA\COPS_FACTORY\FACTORY_DISTRIBUT
OR\bin\session_processor\session_reciever.jar  20190423-SESSION "SESSION_RECIEVED_ACTUAL_TIME$2019-04-23 18:34:06"

错误:

java.lang.ArrayIndexOutOfBoundsException: 1
    + CategoryInfo          : NotSpecified: (java.lang.Array...ndsException: 1:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
    at Session_reciever_less_connection.main(Session_reciever_less_connection.java:41)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:50)

请让我知道如何使用 powershell 解决这个问题。

标签: javapowershell

解决方案


推荐阅读