0

FooBar.java ファイルをコンパイルするとします。

$ javac FooBar.java

正常にコンパイルされたら、通常どおり実行します。

$ Java FooBar < in.txt

期待どおりの出力が得られます。ソース コード (FooBar.java) を変更して別のものを出力し、再度コンパイルすると、最初と同じ出力が得られます。

これは本当に私を怒らせています... javacのキャッシュはありますか? FooBar.class を削除して再コンパイルしても、初期のソース コードから出力が得られます。これを解決する唯一の方法は、FooBar.java を削除し、別の名前の新しいファイルを作成することです (コードをコピーして貼り付けただけです)。

このバグ (?) は本当に私を悩ませています。これが発生する理由の解決策または説明を探しましたが、うまくいきませんでした。

これは私の問題に関連しているようですが、IDE を使用しておらず、クラスパスが作業フォルダーを指しているため、完全ではありません

ソースコードを更新するたびに新しいファイルを作成したくないので、これの原因を突き止めたいと思います...私はJava 1.6.0_27を搭載したWindowsを使用しています

読んでくれてありがとう...

4

2 に答える 2

1

パッケージ宣言はありますか?最初にコンパイルしてから、パッケージ宣言を入れた可能性があります。パッケージ foo.bar がある場合、コンパイラは .class ファイルを foo/bar/FooBar.class に作成しますjava foo.bar.FooBar。パッケージがない場合は、./FooBar.class が作成され、./ 経由で実行されますjava FooBar

于 2012-08-16T01:00:04.177 に答える
0

問題はキャッシングではありません。これを試して:

  1. FooBar.class ファイルのタイムスタンプを見てください (これが RUN です)。
  2. コンパイルをやり直して javac...
  3. タイムスタンプをもう一度見てください。変わった?そうでない場合は、どこか ese にコンパイルしています。
  4. 他のポスターによるパッケージに関するコメントは、これを説明します. クラスパスを設定/変更することでも説明されます
于 2012-08-16T02:06:51.080 に答える