2017-03-20 10 views
0

Javaアプリケーションを起動するスクリプトを実行しています。実行後、アプリケーションは現在の作業ディレクトリ%systemdrive%/ProgramData\Microsoft\Windows\Caches\cversions.2.dbにフォルダを作成します。私は、実行されたJavaコンテキストで変数%SystemDrive%が定義されていないために問題が発生したことをthisで確認しました。
アプリケーションは次のように実行されます。
system("java -jar application.jar");

実行されたアプリケーションにすべての環境を明示的に渡しますか?環境を子プロセスに渡す

+0

をしたいJavaでは

$ENV{SYSTEMDRIVE} . '\ProgramData\Microsoft\Windows\Caches' 

を使うのでしょうか?あなたがそれをどのように実行し、どのようにそれをもう一度掃除するかの最小の例を示してください。 – simbabque

+4

私はその質問を理解していません。 perlに関する限り、環境変数は1セットしかありません。 「ユーザー」と「システム」の区別はありません。必要な環境変数を指定することができます。デフォルトの動作はすべてを継承することです。 – melpomene

+0

javaプログラムがPerlプログラムの子として動作する場合、許可された環境変数のホワイトリストと 'local%ENV'といくつかのクリーンアップがうまくいくはずです。しかし、実際にはもっと詳細を知る必要があります。 – simbabque

答えて

3

文字列%systemdrive%\ProgramData\Microsoft\Windows\Cachesを使用してフォルダを作成している場合、そのフォルダは機能しません。コマンドシェルだけがコマンド内の環境変数を展開し、PerlまたはJavaは明示的に値を展開する必要があります。 Perlでは、あなたはどのようにアプリケーションを起動しない

System.getenv("SYSTEMDRIVE") + . "\\ProgramData\\Microsoft\\Windows\\Caches" 
+0

アプリケーションはそれを直接/直接使用しません。私はいくつかのサブコンポーネントがこのフォルダを作成すると思います... –

関連する問題