2017-11-13 1 views
0

ディレクトリにアドレスを提供していても、そのディレクトリ内の情報がない場合は、そのディレクトリにクラスが含まれていてクラスにアクセスできるかどうかを調べることができますvia URLClassLoaderディレクトリの内容を知らずにディレクトリからクラスにアクセスする

私は現在のディレクトリのアドレスとURLの配列を作成しています:

URL [] urls = new URL[1]; 
urls[0] = new File(address).toURI().toURL(); 
URLClassLoader urlClassLoader = new URLClassLoader(urls); 

しかし、私は何を知っていないので、でも、このアプローチで、私はURLClassLoaderオブジェクトからクラスにアクセスすることはできませんクラスは、右か?呼び出されますか?

+2

[ファイルツリーを歩く](https://docs.oracle.com/javase/tutorial/essential/io/walk.html)と、「.class」ファイルをロードするのはどうですか? –

+0

Javaが意図的にパッケージ内のクラスを列挙する方法を提供していないということは間違いありません。ローダーを覗いて、ディレクトリを取得し、.classファイルを列挙するGuavaユーティリティがあります。 – bmargulies

+0

私はあなたがこれを必要としているのかどうかはわかりませんが、発見可能なクラスにインターフェイスを実装させ、そのインターフェイスをサービスプロバイダインターフェイスにすることでより良いサービスになると思われます。[ServiceLoaderドキュメント](https:// docs .oracle.com/javase/9/docs/api/java/util/ServiceLoader.html)。 – VGR

答えて

0

最も近いものはThe Guava ClassPath classです。しかし、これはURLClassLoaderを覗き見してから、ファイルシステムとやりとりすることによって機能します。

+0

'getAllClasses'はディレクトリ内のすべてのクラスの集合を返しますか? – Brosef

+0

はい、警告が付いています。ソースを読んでください。 – bmargulies

関連する問題