我知道有很多类似的问题和答案。但没有一个解决方案适合我!我不明白为什么(( 所以我有一个可运行的jar例如' program.jar'在它里面我想取这个jar的名字(即program.jar)。我试过跟随:
ClassInsideJar.class.getProtectionDomain().getCodeSource().getLocation().getPath()
new java.io.File(ClassInsideJar.class.getProtectionDomain().getCodeSource().getLocation().getPath())
new File(".")).getAbsolutePath()
(以及不同的变体,如getCanonicalPath等)ClassLoader.getSystemClassLoader().getResource(".").getPath()
在所有这些情况下,我只能走这个罐子的路径。例如,完整路径为J:/folder/program.jar
。我能看到的只有J:/folder
。
错误是什么?我试图在主要班级和其他人中获得jar的名字。
我已尝试通过双击并使用命令行运行此jar。结果是一样的
答案 0 :(得分:1)
试试这个:
(new File(ClassInsideJar.class.getProtectionDomain().getCodeSource().getLocation().toURI())).getName();