是否可以从main中获取包含main函数的.class文件的路径?
答案 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()方法非常适合防止临时文件冲突,因为它们会自动生成唯一的文件名。