No.1
- 回答日時:
まず、Javaは実行しているディレクトリは関係ないので勘違いしないように注意して下さい。
質問の内容ですが、ソースのディレクトリを指しているのでしょうか?
それとも、ライブラリのあるクラスパスを指しているのでしょうか?
前者ですと、Javaの実行とは無関係なのでパスをとることは出来ません。
後者だとすると、
DEF.class.getResource(パス)
で、DEFからの相対パスのリソースを取得できます。
たとえば、DEF.classとおなじディレクトリにあるhoge.propertiesのリソースを取得するばあいは、
DEF.class.getResource("hoge.properties")でできます。
残念ながら、(B)のパスを取得することはできません。
これは、どうやって利用するのでしょうか?
どんなにそれらしい記述をしてもnullが返ってくるのですが・・・。
ABC.classとDEF.classしかなく、メソッドも1つしかない場合にも
利用可能ですか?
調べてもサンプルらしきものも見つかりませんでした;;
Java初心者なもので、わけわからず済みません><
No.2
- 回答日時:
初心者なのは構わないんだけど、何をやりたいのか自分でもよく分かっていないというのではこちらとしても答えようがないので……
DQ9 さんも言及されてますが、とりあえず、次の三つの違いについて勉強する必要があると思われます。
* カレントディレクトリ
* ソースファイルがあるディレクトリ
* クラスファイルがあるディレクトリ (=クラスパス)
この回答への補足
ABC.classからDEF.classをインポート、実行します。
DEF.classはDEF.classが保存されている絶対パス
--->DEF.classからみたらカレントディレクトリ
--->DEF.classからみたらソースが保存されているディレクトリ
を取得したいです。
No.3
- 回答日時:
どういうフォルダ構成になっていて、どういうことをしたいのか具体的に回答してくれるとコードを提示してあげれるかもしれません。
この回答への補足
【ABC.java】
import B.*;
public class ABC {
public static void main(String args[]) {
DEF obj = new DEF();
obj.getDirectory();
}
}
【DEF.java】
package B;
public class DEF {
public void getDirectory() {
System.out.println(System.getProperty("user.dir"));
}
}
これだと実行したクラスが存在するパスを取得してしまいます。
DEF.classが存在するパスを取得したいのですが、
可能でしょうか?
フォルダ構成は質問にある通りです。
No.5
- 回答日時:
一般的に言うと、
クラスファイルはディレクトリに置いてあるかもしれないし、
JARアーカイブに入っているかもしれないし、
ネットワークの向こうにあるかもしれないし、
あるいはクラスファイルは存在せず、単なるバイト配列からクラスを生成してるかもしれません。
私個人の意見ですが、
クラスファイルがディレクトリ内にあるという前提でプログラムを書くのは、
あまり良くないと思います。
それはともかく、
取得した(B)のディレクトリをどのように利用するのか、
ディレクトリを取得する目的を説明していただければ、
何か他の方法がアドバイスできるかもしれません。
クラスローダの仕組みを理解すれば
いちおうディレクトリを取得できると思いますが、
かなりめんどくさそうです。
ありがとうございます。
色んなパターンがあるのですね@@;
Java、深い・・・(笑)
目的は、(B)配下にある自分以外の全てのクラスファイルから
特定のメソッドを実行させる事にあります。
No.6ベストアンサー
- 回答日時:
public String[] getCurrentDirClasses() {
String className = this.getClass().getName().substring( this.getClass().getPackage().getName().length() + 1 ) + ".class";
URL url = this.getClass().getResource( className );
File dir = new File( url.getPath() ).getParentFile();
String[] files = dir.list( new FilenameFilter() {
public boolean accept( File dir, String name ) {
return ( name.endsWith( ".class" ) );
}
});
return files;
}
これで、自分のクラスファイルがある同ディレクトリの全てのクラスファイル名をとれます。
ただ、実行されたクラスがjarだった場合の保証はありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- UNIX・Linux 空のディレクトリで dir を行ったとき 4 2023/05/05 17:54
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaでuseBeanエラーの解決方法
-
Eclipse・プロジェクトで、フォ...
-
earファイルを展開する方法
-
classファイルについて
-
eclipse でclassesフォルダーが...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
ResourceBundleクラスの使い方
-
Eclipseでデバッグが出来ないエ...
-
java クラスファイルとソースコ...
-
DOMParserを使いたいのですが
-
EclipseでHTTP404エラーが出る。
-
【Eclipse】パッケージ・エクス...
-
SVFの設定について:クラスパス...
-
TOMCATを使用したStrutsエラー...
-
プログラム実行の際に、「ソー...
-
EclipseでのJSP・Servlet開発に...
-
JAVAで外部ファイルをインクルード
-
JADで*.jarごとデコンパイルす...
-
Java初心者です。 コマンドプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
eclipse でclassesフォルダーが...
-
EclipseでHTTP404エラーが出る。
-
earファイルを展開する方法
-
【Eclipse】パッケージ・エクス...
-
JADで*.jarごとデコンパイルす...
-
プログラム実行の際に、「ソー...
-
jdbcドライバのjarファイルにク...
-
「削除するか、クラスパスの正...
-
コンパイルをしようとするとエ...
-
java クラスファイルとソースコ...
-
コンパイルした後 java (class...
-
【Eclipse】逆コンパイルでエラ...
-
Javaアプリケーションのアイコ...
-
VisualStudioでC++クラスを追加...
-
「メイン・マニフェスト属性が...
おすすめ情報