如何以编程方式查找主执行类的完整路径

时间:2009-04-11 23:50:43

标签: java classpath classloader

我正在尝试以编程方式本地化一个属性文件而没有 将命令行上的完整路径名传递给我的程序。我想如果可以的话 找到主类的路径,我可以将我的属性文件粘贴在同一个类中 目录或子目录。

如果这不起作用,我可以通过其他方式找到属性的路径 文件没有在命令行上传入。

由于

2 个答案:

答案 0 :(得分:8)

如果预计文件相对于主要类别,您可以使用Class.getResource()Class.getResourceAsStream(),如下所示:

class MainClass {
    public static void main( String[] args ) {
        URL props = MainClass.class.getResource( "foo.properties" );
        // ...
    }
}

这些将分别返回URLInputStream; Properties.load()有一个超载,它接受InputStream

您可以在子目录等中指定相对于类位置的路径,或者在另一个类上使用getResource()方法获取相对于该位置的文件。

如果要计算相对于当前工作目录的路径(不一定与主类的父路径相同),则可以使用以下命令获取该路径:

String cwd = System.getProperty( "user.dir" );

System.getProperties()的文档中列出了可用的系统属性。

答案 1 :(得分:0)

您可以use the ClassLoader to locate the application directory,但作为Rob says,最好直接从类路径加载属性文件。