如何从Windows Powershell调用Java进程?

我无法在Windows Powershell 2.0中运行Java程序.
任何帮助,将不胜感激.我想要绳子
“你好,世界!”打印到Powershell控制台主窗口.
而是将其打印到一个单独的打开的处理窗口中
然后突然关闭.我不知道如何告诉Powershell将产生的Java进程的stdout重定向到当前的Powershell控制台.基本上,我想要的行为就像在DOS外壳下运行Java时的行为一样.

我的测试课是:

class HelloWorldApp { 
    public static void main(String[] args) { 
        System.out.println("Hello World!"); //Display the string. 
    } 
} 

我的PowerShell 2.0代码是这样的:

set-item -path Env:CLASSPATH -value C:\Test 
"CLASSPATH = $Env:CLASSPATH" 
[Diagnostics.Process]::Start('java.exe','-classpath $Env:CLASSPATH C:\
Test\HelloWorldApp') 

另外,我尝试像常规方式那样运行
DOS shell,希望输出在同一控制台中显示:

java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp 

这会导致错误.我收到此错误:

PS >C:\Test\Test.ps1 
CLASSPATH = C:\Test 
java.exe : java.lang.NoClassDefFoundError: C:\Test\HelloWorldApp 
At C:\Test\Site.ps1:3 char:5 
+ java <<<<  -classpath $Env:CLASSPATH C:\Test\HelloWorldApp 
+ CategoryInfo : NotSpecified: (java.lang.NoCla...e\HelloWorldApp: 
                               String) [], RemoteException 
+ FullyQualifiedErrorId : NativeCommandError 
Exception in thread "main" 

据我所知,我的参数是正确的,因为这是
PCEX(http://pscx.codeplex.com)echoargs cmdlet告诉我:

PS >echoargs java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp 
Arg 0 is <java.exe> 
Arg 1 is <-classpath> 
Arg 2 is <C:\Test> 
Arg 3 is <C:\Test\HelloWorldApp> 

我坚信有一种方法可以使它正常工作,因为此代码有效:

## Test.ps1
cd C:\PSJustice
java.exe -classpath . HelloWorldApp

同样,这可行:

cd C:\
java.exe -classpath C:\Test HelloWorldApp

解决方法:

我终于弄明白了.这是最小的错别字:

cd c:\
set-item -path Env:CLASSPATH -value C:\Test 
"CLASSPATH = $Env:CLASSPATH" 
java.exe -classpath $Env:CLASSPATH HelloWorldApp

当指定类名时,它不能包含在类名前面的绝对路径.哎呀.

上一篇:javascript-NodeJS中缩进的多行日志


下一篇:6个例子快速学会python中subprocess库的使用