13

私は現在、現在実行中のクラスのパスを取得する必要があるコンピューター サイエンス ファイナル用の小さな単純な Java プログラムを作成しています。クラス ファイルは C:\2013\game\ フォルダーにあります。

このパスを取得するには、メイン クラスのコンストラクターで次のコード セグメントを呼び出します。

public game(){
    String testPath = this.getClass().getResource("").getPath();
    //Rest of game
}

ただし、このコマンドは、正しい出力が「C:/2013/game」であるにもかかわらず、代わりにこの文字列「/」を返します。さらに、次のコードを使用してこれを修正しようとしました。

public game(){
    String testPath = this.getClass().getClassLoader().getResource("").getPath();
}

これは、私の Eclipse IDE で作業しているにもかかわらず、getClassLoader() が null を返すという事実に由来する NullPointerException を返します。何か案は?

4

8 に答える 8

1

への呼び出しには、呼び出しgetResource([String])元のクラスを含むフォルダーへの相対パスが必要です。したがって、次の場合、渡すものはすべてMyClass.class.getResource([path]);、パッケージ フォルダーに対する有効なパスである必要がcom/putable/あり、実際のファイルを指している必要があります。

package com.putable;

public class MyClass{}

空の文字列と同じファイル名は決して存在しないため、空の文字列を使用することは単に有効ではありません。でも、できますgetResource(getClass().getSimpleName())。その呼び出しによって返されたパスの末尾からファイル名を削除するだけで、必要なクラス ディレクトリが作成されます。

于 2013-06-10T15:38:59.323 に答える
0

このコードを使用してみてください

public game()
{  
    String className = this.getClass().getSimpleName();  
    String testPath = this.getClass().getResource(className+".class");  
    System.out.println("Current Running Location is :"+testPath);   
}

詳細については、リンクにアクセスしてください Java クラスのロード元を見つける

于 2013-06-10T15:55:32.860 に答える