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

标签 java classpath classloader

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

如果这不起作用,是否有其他方法可以找到属性的路径 文件而不将其传递到命令行。

谢谢

最佳答案

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

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

它们将分别返回一个URL或一个InputStreamProperties.load() 过载它接受一个InputStream

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

如果你想计算相对于当前工作目录的路径(不一定与主类的父类相同),那么你可以使用以下方法来获取该路径:

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

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

关于java - 如何以编程方式找到主执行类的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/740999/

相关文章:

java - 使用 Hibernate 从 CSV 文件更新 Oracle DB 数据

java - 名称错误 NoClassDefFoundError

java - 我应该把 jar 文件放在哪里?

java - ClassCastExceptions 由于在 WebSphere 8.5.5 应用程序容器中升级到 hibernate 4.2.8

java - 是什么导致 Java 类被加载?

java - 高效的关键字检测/提取。预定义的关键字集

java - 检查映射键是否大于值

java - 可执行 JAR 忽略它自己的 Class-Path 属性

java - 如何使用自定义 ClassLoader?

c# - 在 Java 中实现自定义 COM 接口(interface)