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

2 java classpath classloader

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

如果这不起作用,我可以通过其他方式找到属性文件的路径,而无需在命令行上传递它.

谢谢

Rob*_*Rob 8

如果预期文件相对于主类,则可以使用Class.getResource()Class.getResourceAsStream()如下:

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

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

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

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

String cwd = System.getProperty( "user.dir" );
Run Code Online (Sandbox Code Playgroud)

文档中有可用的系统属性列表System.getProperties().