2017-01-07 6 views
0

異なるオペレーティングシステムで異なるクラスパス区切り文字が必要であることに気付いています。私は、CMDがPowerShellで置き換えられているウィンドウのビルドを実行しています。これは、セミコロンセパレータを使用するときに問題を引き起こしています。javac powershell classpath separator

実行しようとしているコマンドはcmd /cで始まり、代わりにコマンドプロンプトで実行されますが、PowerShellがコマンド全体を解析してセミコロンを見て、それが終わりだと思うと思います!

私の全体のコマンドは次のとおりです。

cmd /c javac -cp PATH1;PATH2 -d DESTINATION_PATH SOURCE_PATH

私は無駄にスペース、コロンとピリオドを使用して試してみました。誰かが解決策を提案できますか?

これは私の最初の質問stackoverflow、コミュニティが助けて、最終的に他の人を助けることを願っています。 :)

+2

'-cp "PATH1、PATH2"' –

答えて

0

私はあなたがCMDでjavacが要求されるべきではない実行PowerShellの

Start-Process cmd.exe -ArgumentList "/c javac -cp PATH1;PATH2 -d DESTINATION_PATH SOURCE_PATH" -NoNewWindow 
+0

あなたは "CMDが交換された" とはどういう意味ですか? CMDは、最新の「Windows 10」を含むがこれに限定されないすべてのMicrosoftオペレーティングシステムで利用できます。 – YanivK

+0

これで動作しないマシンは、Windows InsiderプログラムのWindowsのテクニカルプレビューを使用しています。私は[リンク](http://www.networkworld.com/article/3143196/windows/microsoft-is-replacing-the-cmd-prompt-with-powershell.html)を参照しているので、CMDはまだ周りですが、私は'String []'コマンドをビルドしている私のjavaプログラムのフードの下で、PowerShellがそれを実行するために使用されていると考えてください。 CMDとPowerShellにコマンドをコピーして貼り付けた私の結果は、それをサポートしています。 – user2953165

+0

ありがとうございます。 PowerShellの「置き換え」CMDについて詳しく説明します。私は、最新のプレビューで、javaコード 'Process pro = Runtime.getRuntime()。exec(String [] cmdArray、String [] envp、File dir);によって作成されたプロセスがPowerShellで実行されなかったと考えていました。すぐに尋ねる私の最初の試みはその理論を支持しているように見えましたが、エラーは実際は別の場所にありました。 – user2953165

0

を使用して、次のようにプロセスを開始示唆しています。空白や特殊文字を含む(おそらく)引数を引用符で囲むだけです。 call operator&)の使用をおすすめします。この場合はオプションですが、実行ファイルを引用符で囲む場合(実行可能ファイルやパスにはスペースが含まれているか、変数に格納したいなど)必要です。

& javac -cp "PATH1;PATH2" -d "DESTINATION_PATH" "SOURCE_PATH" 

また、引数を提供するためのsplattingを使用することができます。

$javac = "$env:JAVA_HOME\bin\javac.exe" 
$params = '-cp', "PATH1;PATH2", 
      '-d', "DESTINATION_PATH", 
      "SOURCE_PATH" 

& $javac @params 
+0

'PATH1; PATH2'を二重引用符で囲むことについてのコメントをありがとう。それは部分的に問題を解決しました。私はCMDから 'javac'を呼び出すことができますが、' javac'だけで動くようにPowerShellを正しく設定したとは思いません。私はかなりあなたのスプラットソリューションがトリックを行うだろうと確信しています。 – user2953165

+0

基本設定に必要なのは、環境変数 'JAVA_HOME'(あなたのJDKがインストールされているフォルダを指す)と' javac.exe'(通常は '%JAVA_HOME%\ bin')へのパスです'PATH'環境変数です。どちらの環境変数もCMDとPowerShellに影響します。つまり、CMDで作業している設定をPowerShellで使用する必要がある場合です。 –