8

この質問のタイトルを書くのに苦労しましたが、これが私の状況と私が尋ねていることです:

  • テストを実行するために「anttest」を実行するJavaプロジェクトがあります
  • テストの実行には約10分かかります
  • これらのテストを実行している最中に、結果なしに別のGitブランチに切り替えることはできますか?
  • 元のコードに対してテストを完了し、それが発生している間、別のブランチで作業できるようにしたいです。

私の質問の根本は、アプリケーションがロードされて実行された後に.classファイルが必要かどうかということだと思います。 クラスはメモリに保存されているだけで、ファイルシステム上のファイルはもう必要ありませんか?それとも、ファイルシステム上のものにアクセス/読み取りますか?

実行中のアプリケーションに必要なJavaについての洞察や理解を深めていただければ幸いです。

4

5 に答える 5

6

クラスはオンデマンドでロードされます。クラスローダーは、そのクラスが参照されるまで、クラスのロードを試みません。したがって、実行の途中でクラスパスからクラスファイルを削除すると、ほぼ確実に失敗が発生します。

于 2013-03-07T21:01:29.190 に答える
3

テストの実行中にGitから取得した.javaファイルを同じ場所にコンパイルしない場合、IDEがクラスをロードする方法に関係なく、.classファイルに問題はありません。

于 2013-03-07T21:00:48.200 に答える
0

標準(つまりsun / oracle)JVMでは、クラスがロードされると、jvmがシャットダウンするまでメモリに残りますが、クラスはオンデマンドでロードされるため、まだロードされていない可能性があります。

于 2013-03-07T21:02:32.677 に答える
0

すべてのファイルがメモリにロードされている場合、それは必要ありません...しかし、どのようにしてすべてのクラスがメモリにロードされていることを確認できますか...したがって、クラスパスにクラスファイルが必要になります

于 2013-03-07T21:02:35.320 に答える
0

さて、私はあなたが一歩後退して解決策を再考しなければならないと思います。

あなたは統合テストを実行すると書いた。そして、テストの一部として、テストされるソースを切り替えます。これを行うと、実際に何が実行されたかがわからないため、役に立たないテストデータが生成されます。

ソフトウェアの2つの異なるバージョン/ブランチをテストする場合は、2つのテスト実行を有効にして、結果を比較します。

* .classファイルを使用したことがある場合は、それがロードされていることを確認できます。クラスファイルをロードした後、JVMのメモリに残ります。しばらく使用されておらず、GEMスペースが少なくなっている場合は、アンロードされる可能性があります(ただし、そうは思いません)。

于 2013-03-07T21:11:13.267 に答える