当前位置: 首页 > 面试题库 >

获取正在执行的类的文件系统路径

屈浩波
2023-03-14
问题内容

这个问题已经在这里有了答案

查找从何处加载Java类 (11个答案)

2年前关闭。

给定使用java命令执行的类,是否有任何方法可以在运行时从此类的代码确定其当前文件系统的位置?

例如以下课程:

public class MyClass{
 public static void main(String[] args){\
   new MyClass().doStuff();
 }

 private void doStufF(){
   String path = ... // what to do here?!
   System.out.println("Path of class being invoked: " + path);
 }

}

是否有任何方法可以在刚刚被调用的MyClass.class文件的文件系统中获取并打印正确的路径?

同样,如果我从java -jar命令调用jar文件,是否有任何方法可以从该jar内的类中获取jar文件的路径?

PS:请 不要对 从中java调用命令的 工作目录做任何假设


问题答案:

以下代码段将为您完成此操作:

final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

MyClass用你的main班级代替

结果File对象f表示.jar已执行的文件。您可以使用此对象获取父级以查找所在目录.jar



 类似资料:
  • 问题内容: 我有调用其他脚本文件的脚本,但是我需要获取该进程中当前正在运行的文件的文件路径。 例如,假设我有三个文件。使用: 来电。 调用。 我怎样才能获得的文件名和路径,从内部代码,而无需从传递这些信息作为参数? (执行将返回原始启动脚本的文件路径,而不是当前文件的路径。) 问题答案: p1.py: p2.py:

  • 问题内容: 我的代码在一个JAR文件(例如)中运行,我需要在代码中知道正在运行的在哪个文件夹中。 因此,如果在中,无论我当前的工作目录是什么,我都希望获取该路径。 问题答案: 用班级名称替换“ MyClass”。 显然,如果从非文件位置加载你的类,这将做奇怪的事情。

  • 问题内容: 我的代码在一个JAR文件(例如foo.jar)中运行,我需要在代码中知道正在运行的foo.jar在哪个文件夹中。 因此,如果foo.jar在中C:\FOO\,无论我当前的工作目录是什么,我都希望获取该路径。 问题答案: 用你的类名称替换“ MyClass”。 显然,如果从非文件位置加载你的类,这将做奇怪的事情。

  • 问题内容: 似乎是一个新手问题,但事实并非如此。一些通用方法并非在所有情况下都有效: sys.argv [0] 这意味着使用,但是如果你是从另一个目录中的另一个Python脚本运行的,则此方法不起作用,并且这可能在现实生活中发生。 文件 这意味着使用,但是我发现这不起作用: py2exe没有属性,但是有一种解决方法 当你从IDLE运行时,没有属性 我得到的 答案不完整的相关问题: Python-查

  • 我的代码是非常简单的代码: 已从selenium hq网站下载并添加jar作为“Java 3.13.0”。从同一网站下载Google Chrome Driver-2.29,并将其定位在“/Users/Jagman/Downloads/chromedriver”路径。 当我运行上面的代码时,我得到一个错误“ 获取版本错误,但没有正确的配置。所以请帮我解决这个问题。详细信息:OS:Mac。

  • 我试图得到系统路径,其中jar位于运行时。 下面的代码在REPL中工作,但是,如果我使用sbt组装jar,它会失败, SBT错误如下, 运行java.lang.运行时异常:未检测到主类。在scala.sys.package$。错误(package.scala:27)[跟踪]堆栈跟踪抑制:运行最后一次编译:运行完整的输出。[错误](编译:运行)未检测到主类。[错误]总时间:0秒,4月13日2016