【问题标题】:Get Assembly Version in Java在 Java 中获取程序集版本
【发布时间】:2013-04-25 15:02:12
【问题描述】:

我有什么方法可以获取 Java 程序集或应用程序的版本吗?

例如,我有一个位于 Program Files 中的 .NET .dll 文件。我通常在这个 .dll 上调用“loadLibrary”,这样我就可以在 C++ 中调用 JNI 方法。

System.loadLibrary("MyJniAssembly");

有人能指出我正确的方向吗?谢谢。

【问题讨论】:

  • 你能控制 Java 代码吗?
  • @Fildor:是的,我可以控制 Java 代码。 @Barış:不完全是。我想查看我的 DLL 并获取它的版本号,即1.0.0.0
  • 对不起,一开始我误会了。当然你在java中并通过jni调用......还没有听说过标准化的方法。

标签: java java-native-interface .net-assembly


【解决方案1】:

最简单的方法是在程序集中实现的另一个本机方法中公开该信息。如果您无法在此处执行此操作,则必须使用这种方法创建一个新程序集,但该程序集需要一个指示您感兴趣的程序集或类型的参数。

【讨论】:

  • 所以如果我理解正确的话,最简单的方法是创建一个新的本地方法来调用 C++ dll,然后在那里获取程序集版本? C++ dll 调用另一个 C# dll,那么我是否应该创建另一个新的 dll,它只返回我感兴趣的 C++ 或 C# dll 的版本?
  • 是的。该方法可以返回任何一个程序集的版本或返回在该时间点加载的所有程序集的列表。实现这种方法的位置取决于您可以更改哪些程序集以及是否可以调用 System.loadLibrary 以获得新程序集。
  • 在我需要检查版本的程序集中,我可以控制除一个以外的所有程序集。所以我想我将在 JNI 中实现一个新的本地方法,然后 C++ 代码将返回我感兴趣的 dll 的版本号。这听起来正确吗?
  • 是的。唯一需要注意的是,只有在加载了您感兴趣的程序集后才应调用该方法。
  • 好的,我会在今天下午晚些时候或明天试试这个,如果有任何问题,我会报告。感谢汤姆的帮助。
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 2010-10-28
  • 2011-02-18
  • 2011-01-18
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多