我不能给这个问题一个合适的标题,所以很抱歉。我正在做一个模块化的应用程序。我在运行时加载各种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中的位置。