2013-04-25 98 views
3

有沒有什麼辦法讓我用Java獲得程序集或應用程序的版本?用Java獲取組件版本

例如,我有一個位於Program Files中的.NET .dll文件。我通常在這個.dll上調用`loadLibrary',這樣我就可以在C++中調用JNI方法。

System.loadLibrary("MyJniAssembly"); 

有人能指出我正確的方向嗎?謝謝。

+0

你是否擁有對Java代碼的控制權? – Fildor 2013-04-25 15:28:35

+0

你在找什麼。像這樣:http://stackoverflow.com/questions/8273630/checking-java-assembly – 2013-04-25 15:32:16

+0

@Fildor:是的我可以控制Java代碼。 @Barış:不完全。我想看看我的DLL,並得到它的版本號,即'1.0.0.0' – gwin003 2013-04-25 15:32:58

回答

2

最簡單的方法是在程序集中實現的另一個本地方法中公開該信息。如果你不能在那裏做,你必須用這種方法創建一個新的程序集,但需要一個參數來指示你感興趣的程序集或類型。

+0

所以如果我正確地理解了你,最簡單的方法是創建一個新的本地方法來調用C++ dll,然後獲得程序集版本? C++ dll調用另一個C#dll,那麼我應該創建另一個新的dll,它只是簡單地返回我感興趣的C++或C#dll版本? – gwin003 2013-04-25 15:40:35

+0

是的。該方法可以返回任何一個程序集的版本,或者返回在該時間點加載的所有程序集的列表。如果實現這樣的方法取決於哪些程序集可以更改,以及是否可以爲新程序集調用'System.loadLibrary'。 – 2013-04-25 15:47:13

+0

在我需要檢查版本的程序集中,我控制了除一個之外的所有程序。所以我想我會在JNI中實現一個新的本地方法,然後C++代碼將返回我感興趣的dll的版本號。這聽起來是否正確? – gwin003 2013-04-25 15:54:20