2012-03-01 3 views
1

java.io.Fileにいくつかのフィールドを追加し、それをローカルにjarにコンパイルしました。 これを、そのフィールドを使用するアプリケーションでインポートします。 しかし、javac -classpath myio.jar Test.javaはコンパイルされません。 リフレクションを使用してjava -classpath myio.jar Testの実行時エラーが発生しました このようなフィールドはありません。 ファイルはjava.ioとしてパッケージ化する必要があります。 JVMに強制的にロードする方法がありますか java.io.Fileまたはそれは禁止されていますか?JVMに標準のものの代わりにカスタマイズされたjava.io.Fileをロードさせる方法はありますか

+2

なぜこれをやりたいですか? java.io.Fileはあなたに何を与えていないのですか? –

+2

なぜあなたは 'File'をサブクラス化しませんでしたか? – vulkanino

+1

私はこの権利を得ましょう。あなたは 'java.io.File'から継承するクラスを作成するか、単にあなたのjarファイルに' java.io.File'を実装しましたか?これはどうすれば機能するのでしょうか?それを 'com.my.ExtendedFile'などと呼んで、それをあなたのコードで使ってみましょう。 – Nim

答えて

3

強制的にJVMにローカルjava.io.Fileをロードする方法はありますか、それとも禁止されていますか?

これは禁止されています。

あなたはあなたの「カスタマイズ」Fileクラスをコンパイルし、ブートクラスパスに追加し、この周りおそらく仕事ができる...しかし、実験以外の何のためにこれを行うには本当に悪い考えです。


それは理由アンドロイドのです。彼らは別のJavaコアライブラリの実装を持っています。私はいくつかのファイルを移植したい。

AndroidからJava(TM)へコードを移植する場合は、プラットフォームを変更するのではなく、プラットフォームの依存関係を削除するコードを変更する必要があります。

+0

ポインタありがとう! – Oxdeadbeef

0

実際には、jdkのファイルクラスが最初にロードされるため、クラスはロードされません。 クラスをjdk(rt.jar)に置くことができます。コンパイルエラーがなければ動作するはずです。

関連する問題