获取包含main的.class文件的目录路径

时间:2009-04-22 16:47:18

标签: java file path

是否可以从main中获取包含main函数的.class文件的路径?

4 个答案:

答案 0 :(得分:28)

URL main = Main.class.getResource("Main.class");
if (!"file".equalsIgnoreCase(main.getProtocol()))
  throw new IllegalStateException("Main class is not stored in a file.");
File path = new File(main.getPath());

请注意,大多数类文件都汇编到JAR文件中,因此在每种情况下都不起作用(因此IllegalStateException)。但是,您可以使用此技术找到包含该类的JAR,并且您可以通过将getResourceAsStream()替换为getResource()来代替{{1}}来获取类文件的内容,这将是否有效class位于文件系统或JAR中。

答案 1 :(得分:0)

根据http://www.cs.caltech.edu/courses/cs11/material/java/donnie/java-main.html,没有。但是,我建议阅读$0 (Program Name) in Java? Discover main class?,这至少会为您提供主要课程。

答案 2 :(得分:0)

你需要什么?如果您需要它来获取同一目录中的任何文件,那就是Class.getResourceAsStream()的用途。

答案 3 :(得分:0)

这对我来说更像是最终用户问题。还要考虑可能需要运行任何给定应用程序的多个实例,并且阻止用户这样做会成为一个主要的烦恼。

如果问题出在临时文件冲突上,那么只需确保所有临时文件都有唯一的名称。据我了解,这是人们认为需要阻止其应用程序的多个实例运行的最常见原因。

P.S。:java.io.File.createTempFile()方法非常适合防止临时文件冲突,因为它们会自动生成唯一的文件名。