実行ファイルのディレクトリってC#(.net framework)なら
FileInfo fileInfo = new FileInfo(Environment.GetCommandLineArgs()[0]); string dir = fileInfo.Directory.FullName;
で簡単に取れますよね。
javaだと「OSの違い」とか「jarパッケージかclassか」とかでもう少し長いコードが必要なようです。
public class Util { public static String getClassDir(Class appClass) { String className = appClass.getSimpleName() + ".class"; String path = appClass.getResource(className).getFile(); int jarIndex = path.toLowerCase().indexOf(".jar!/"); if(0 <= jarIndex) path = path.substring(0, jarIndex); path = path.substring(0, path.lastIndexOf('/') + 1); if(path.startsWith("file:")) path = path.substring("file:".length() ); if (path.matches("^/[a-zA-Z]:/.*")) path = path.substring(1); return path; } }
使い方は、
String dir = Util.getClassDir(Test.class);
のようにして「型名.class」の引数を渡して呼びます。 ちなみに標準apiのクラスを引数にするとjreのディレクトリが帰ります。
注) 私のPC(windows7)でしか動作確認していません。