【问题标题】:Converting dll to jar将dll转换为jar
【发布时间】:2013-06-02 19:41:45
【问题描述】:

我正在尝试找到一种将 dll 转换为 jar 文件的方法。我有一个与 java 应用程序通信的 .net 应用程序。核心实体是我必须在 java 中手动复制的 .net 对象。 我读过有关 IKVM 的信息,但它似乎只将 jar 转换为 dll,而不是相反。

编辑:如果有从 dll 创建 java 类的工具也可以。 提前致谢

【问题讨论】:

  • Jar 和 dll 是由两个不同的编译器生成的吧。
  • 没错。我正在尝试找到一个可以读取 dll 并将其编译为 jar 的工具。或者将创建匹配的 java 类。
  • 我强烈怀疑这样的工具是否存在或什至是可能的。
  • 我想我可以建议你看看 sqlite-jdbc 项目。这不是您要寻找的。但是,它实现了您想要实现的想法:它需要用于 sqlite 的 dll 库(以及 linux/macos so,但这不是重点),并为它制作了一个 jni 包装器。所有这些共享库都打包到最终的jar中,因此java驱动程序可以调用本机内置库。我相信您可以查看它的构建过程,并复制到您的项目中。它的源代码可以在这里找到:bitbucket.org/xerial/sqlite-jdbc

标签: java dll jar ikvm


【解决方案1】:

没有这样的工具。

dll 是一个本地编译的库。这意味着它被编译成机器代码。可能由 C/C++/C# 编译器编译。

jar 文件是包含“.class”文件的 zip 文件,这些文件是编译成“java 虚拟机代码”的文件。可能由 java/clojure/scala 编译器编译。

这是两个截然不同的不相容的东西。

创建这样一个可以进行这种翻译的工具并非不可能,但这肯定是一项极其艰巨的任务,因为它需要从一种机器代码转换为另一种机器代码,并且需要管理多个问题,例如依赖关系解决, 不同类型的结构等。

但是,我想你想这样做是因为你想在一些 java 代码中使用 DLL。这有点可能,但实际上相当复杂。您需要使用 JNI。

看看这个问题,因为它可能会帮助您实现您想要做的事情: Calling C++ dll from Java

【讨论】:

  • 不过,将 dll 文件包装在 jar 文件中是一种常见的做法。
【解决方案2】:

这实际上是一项容易执行的任务。将 .dll 转换为 .jar 就像使用 com4j 和命令行上的几个命令一样简单。

  1. 下载 com4j。
  2. 在上述步骤中打开命令行并导航到 com4j 目录。
  3. 执行以下命令。

java -jar tlbimp.jar -o outputFolder -p nameOfPackage "pathToFile"

  1. 然后用下面的方式 jar 结果:

    jar cf desiredJarName.jar 文件夹YouWantJard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多