动态加载程序时如何获取当前路径



我不能给这个问题一个合适的标题,所以很抱歉。我正在做一个模块化的应用程序。我在运行时加载各种jar文件,并在运行时调用(jar文件的)特定类的特定方法。

jar文件有一些支持的文件。现在我的jar文件使用了另一个应用程序,比如abc,它位于我保存jar文件的同一目录中。当我运行jar文件时,

new File(".").getAbsolutePath()

给出了正确的路径(这是abc所在的位置),程序运行良好。但是,当我动态加载这个jar文件并使用反射调用方法时,上面的代码给出了父程序的路径,并且在该路径上找不到abc

现在我的问题是我如何找到我的jar文件存在的路径,当我运行我的jar文件的代码使用反射。

如果你需要更多的解释,请告诉我。

试试这样:

public static void main(String[] args) {
    System.out.println(StringUtils.class.getResource("StringUtils.class"));
}

(注意:StringUtils当时作为Maven依赖项存在于我的类路径中)这给了我:

jar:file:/home/******/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar!/org/apache/commons/lang3/StringUtils.class

由于类位于JAR文件中,因此它还提供了类文件在JAR中的位置。

相关内容

  • 没有找到相关文章

最新更新