2012-12-10 60 views
-1

是否有任何方法可以知道正在運行的跨平臺jar的文件名?獲取正在運行的jar文件的文件名

我可以得到路徑,我可以獲取目錄中所有罐子的名稱,或者我可以將命令傳遞給操作系統上的命令提示符/ shell以嘗試找到它,有沒有更好的方法這樣做?

+0

這是您的java程序?爲什麼不只是添加一個方法來吐出名字? – Max

+0

因爲我需要能夠看到它是否已經在文件系統上運行,所以能夠執行thisFile.alreadyRunning()比僅獲取文件的名稱更有意義。 –

+0

你想達到什麼目的?看起來如果你寫代碼和製作罐子,你應該知道你叫他們什麼。 –

回答

1

到這裏看看:http://mindprod.com/jgloss/wherejars.html

public class Where 
    { 
    /** 
    * main 
    * @param args name of fully qualified class to find, using dots, but no dot class. 
    * e.g. java.exe Where javax.mail.internet.MimeMessage 
    */ 
    public static void main (String[] args) 
     { 
     try 
     { 
     String qualifiedClassName = args[0]; 
     Class qc = Class.forName(qualifiedClassName); 
     CodeSource source = qc.getProtectionDomain().getCodeSource(); 
     if (source != null) 
      { 
      URL location = source.getLocation(); 
      System.out.println (qualifiedClassName + " : " + location); 
      } 
     else 
      { 
      System.out.println (qualifiedClassName + " : " + "unknown source, likely rt.jar"); 
      } 
     } 
     catch (Exception e) 
     { 
     System.err.println("Unable to locate class on command line."); 
     e.printStackTrace(); 
     } 
     } 
    }