0

私のパスの問題に対する最善の解決策を見つけようとして、少し問題があります。私は2つのことを取得したいJavaテストを実行しています。

  1. プロジェクトの絶対位置
  2. 実行中の現在のクラス ファイルの絶対位置

フォルダ構造が損なわれないように、OS のバージョンに / または \ を適切に適用したい。私は現在これを使用していますが、まさに私が探しているものではありません

final String parentDir = System.getProperty("user.dir");
final String path = "src/test/java/" + method.getDeclaringClass()
    .getCanonicalName().replaceAll("\\.", "/") + ".java";

どんな助けでも大歓迎です。ありがとう

更新:コード内のコメントにアクセスする必要があるため、プリコンパイル済みコードの URL を取得しようとしています。これはあなたの男の答えのいくつかを変えるかもしれません

更新 2: OK 動作するようになりました。

final String path = new File(getClass().getResource("/").getFile())
            .getParent().split("target")[0] + "src/test/java/" + method
            .getDeclaringClass().getCanonicalName()
            .replaceAll("\\.", "/") + ".java";

みんなありがとう

4

2 に答える 2

1

Given that you are calling this from MyClass you should call File directory = (new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath())).getParentFile();

I had the same question once. In addition to Jatin's answer I had to add an toURI() to get the correct path on all platforms (Windows, etc.) and post 1.5 JVMs.

于 2013-05-06T20:28:02.440 に答える