2013-04-25 65 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