2

CreateProcess (または _spawnv()) を使用して、Windows VC++ 6 プログラムから次のコマンド ライン (プロセス) を起動します。

  • java -cp c:\dir\updates.jar;c:\dir\main.jar メイン

そして、updates.jar 内のクラスの更新 (main.jar 内の一部をオーバーライドする) が読み取られないか、見つからない。これは、updates.jar ライブラリが見つからないか読み取れないかのようです。

ショートカットから、または適切なコマンドラインから同じ行を起動すると、すべてが検出され、適切に実行されます。

コマンド ラインから JVM を起動し、それを実行したままにし、実行可能なスタブ (上記) を起動すると、すべて正常に動作します。(これにより、問題がファイルの権利の問題であるように見えます)。

どんな洞察も大歓迎です!

――エドワード

4

3 に答える 3

1

Microsoft の FileMon ユーティリティを使用して、何が起きているかを調べてみてください。インクルード フィルターを「updates」に設定して、問題に焦点を当てます。

http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

于 2008-11-16T21:39:56.157 に答える
0

ありがとうjdigital

FileMon を試してみたところ、何が間違っていたのかがわかりました。CreateProcess() を呼び出す実行可能ファイルには、以前に更新 JAR をコピーしようとしたため、updates.jar へのファイル ハンドルが閉じられていませんでした。本番環境では機能するが、テスト環境では機能しない不適切なコード。

于 2008-11-17T20:35:09.737 に答える
0

これを別のマシンで試しましたか?別のOS?どの JVM を使用していますか? さまざまな JVM を試しましたか?

問題を示す最小限の例を教えていただけますか?

于 2008-11-13T10:59:12.573 に答える