获取包含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()方法非常适合防止临时文件冲突,因为它们会自动生成唯一的文件名。