一个java程序打包成jar之后运行,如何获得这个jar的完整文件名?
Class thisClass = this.getClass();
String suffix = "/" + thisClass.getName().replace(".", "/") + ".class";
URL url = thisClass.getResource(suffix);
String fullName = url.toString();用上面的代码可以获得jar文件名,但是文件名是经过处理的:jar:file:/E:/Java/Test/z/t.jar!/ztest/Test.class
并且如果路径中有空格,也会出现稀奇古怪的字符。

解决方案 »

  1.   

    System.getProperty("user.dir");试试。
      

  2.   

    System.getProperty("user.dir") 
    只能获得当前的运行目录,不是要运行的程序所在的目录。
    如果在某个目录运行其它目录的java程序就不行了
      

  3.   

    URL url = Element.class.getResource("/musics/cmusic.mid");
    试试这个方法
    Elment是你当前自己的类 后面参数是 图片名字或者文件名字你看看api
      

  4.   

    我就是用的这个方法,但输出来的是jar:file:/E:/Java/Test/z/t.jar!/test/Test.class
    而且有空格的话是这样的:jar:file:/E:/Java/Test/z/t%20.jar!/ztest/Test.cl
      

  5.   

    但是这个程序最后打成jar包,可能随便放了,空格可能出现啊;
    除了空格问题,另外补充一点,输出来的是jar:file:/E:/Java/Test/z/t%20.jar!/ztest/Test.class