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

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

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()来获取类文件的内容,并且无论该类是否在文件系统或JAR。

根据http://www.cs.caltech.edu/courses/cs11/material/java/donnie/java-main.html ,没有。 但是,我建议用Java读取$ 0(程序名)? 发现主要课程? ,至少给你主要的课程。

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

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

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

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