2016-06-14 10 views
0

はので、私は、Javaプロジェクトを持っている、と私は現在、Javaでファイル名を含むプロジェクトファイルパスを取得する方法は?

String pathname = test.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

あるこの返却される/ホーム/ mrpickles /デスクトップ/ HANSTUFF/securesdk/SRCを使用して、ファイルへのパスを取得することができますよパス "JavaTest"というクラスを持つ "JavaWrapper.java"と呼ばれる私のファイルに。私が返すのは、 "/home/mrpickles/Desktop/HANSTUFF/securesdk/src/JavaWrapper.javaです。パスにファイル名が含まれています。どうすればいいですか?

+0

可能重複:http://stackoverflow.com/questions/19451480/get-path-of-current-file – alexbt

答えて

0

実際にはできません。

あなたは.javaファイルを右、コンパイル後.classファイルに変換されていることを知っていますか?あなたが保存することができます

唯一のものは、パッケージ構造である。そしてまた、単一.javaファイルが一致しただけのパブリッククラスを含めることができますファイル名は.javaですが、名前が異なる複数のクラスを含めることができます。

ファイルが.class個のファイルにコンパイルされたら、それらを同じパッケージ構造に保つことによって異なる場所に移動することができます。したがって、あなたのソース.javaの場所は.classファイルの場所と異なる場合があります。

更新:

クラスファイルががロードされているところから、あなたは基本的な完全なクラス名と場所を印刷することができます。

public class Test { 
    public static void main(String[] args) { 
     Test test =new Test(); 
     System.out.println("Class Name: "+test.getClass().getSimpleName()); 
     System.out.println("With Package Name: "+test.getClass().getName()); 
     System.out.println("Location: "+ClassLoader.getSystemResource("Test.class")); 
    } 
} 

出力:

Class Name: Test 
With Package Name: com.test.Test 
Location: file:/C:/workspace/Test-Project/build/classes/Test.class 
+0

私は知っています。私は、クラスの名前を持つためにどのようにパスを得ることができるかということを私が言いたいと思います。たとえば、JavaWrapper.java内のmyクラスはJavaTest.classと呼ばれます。それを含めて私が道を得る方法はありますか?ありがとう。 –

+0

@ Mr.Pickles答えを更新しました。 – K139

関連する問題