dja*_*fan 3 java powershell stdout
我在使用Windows Powershell 2.0运行Java程序时遇到问题.任何有关这方面的帮助将不胜感激.我想要字符串"Hello World!" 打印到Powershell主控制台窗口.相反,它被打印到一个单独的进程窗口然后突然关闭.我不知道如何告诉powershell将生成的java进程的stdout重定向到当前的PowerShell控制台.基本上,我想要的行为就像我在DOS shell下运行java时所获得的那样.
我的测试类是:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
Run Code Online (Sandbox Code Playgroud)
我的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')
Run Code Online (Sandbox Code Playgroud)
或者,我尝试像这样运行它,就像我使用常规DOS shell一样,希望输出显示在同一个控制台中:
java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp
Run Code Online (Sandbox Code Playgroud)
它会导致错误.我收到此错误:
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"
Run Code Online (Sandbox Code Playgroud)
据我所知,我的args是正确的,因为这是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>
Run Code Online (Sandbox Code Playgroud)
我相信有一种方法可以让它工作,因为这段代码有效:
## Test.ps1
cd C:\PSJustice
java.exe -classpath . HelloWorldApp
Run Code Online (Sandbox Code Playgroud)
此外,这有效:
cd C:\
java.exe -classpath C:\Test HelloWorldApp
Run Code Online (Sandbox Code Playgroud)
我终于弄明白了.这是最小的拼写错误:
cd c:\
set-item -path Env:CLASSPATH -value C:\Test
"CLASSPATH = $Env:CLASSPATH"
java.exe -classpath $Env:CLASSPATH HelloWorldApp
Run Code Online (Sandbox Code Playgroud)
指定类名时,它不能包含前缀类名的绝对路径.哎呀.
归档时间: |
|
查看次数: |
17157 次 |
最近记录: |