【问题标题】:call java program which includes jna from batch file从批处理文件中调用包含 jna 的 java 程序
【发布时间】:2014-08-13 12:43:34
【问题描述】:

我正在尝试在批处理文件中调用 java 程序。我的 java 程序用 JNA 调用了一个 dll。运行批处理文件时,它说找不到 jna 库类。我已经将 jna jar 文件放到了我的批处理文件夹中。可能缺少什么?

我的批处理文件:

@ECHO OFF
java -cp .;jna-4.1.0.jar com/sun/jna/Library
java MyBenchmark

我遇到以下错误:

java.lang.NoClassDefFoundError:com/sun/jna/Library

我的 jna jar 文件也与我的基准批处理文件相同。 当使用 java -cp .;jna-4.1.0.jar com/sun/jna/Library 时,cmd 也会给出该错误: 在 com.sun.jna.Library 类中找不到主要方法

库是一个接口,我调用的 java 程序使用该接口。但是 cmd 说没有 main 就无法加载它。我必须用它来达到 jna。

【问题讨论】:

    标签: java batch-file jna


    【解决方案1】:

    你必须指定 ClassPath "-cp": java -cp [path to your jar] [class file to run]

    查看this

    【讨论】:

    • 我使用了它们,我也添加了库类。它说图书馆没有主要方法。我不明白,我只想使用 jna 库中的一个类而不是 main 方法。
    • 还是同样的错误,我改变了一点,现在可以工作了。谢谢你的帮助。我将在下面给出我的解决方案
    【解决方案2】:

    如果你使用JNA并想从批处理文件中调用一个使用其库的java程序,你必须避免使用java文件。因为当你从批处理中调用 jna.jar 时,它也无法在运行时加载类。

    我的代码是这样的:

    @ECHO OFF
    java -jar jna-4.1.0.jar
    java MyBenchmark
    

    我也尝试了许多其他解决方案,但没有任何效果(我也在问题部分使用了代码)。

    最后我尝试将我的项目导出为 jar 并使用它。首先,我想声明我的 IDE 是 Intellij IDEA。尽管我已经放置了 jar 依赖项,但它不能将项目依赖项放入我的清单文件(jna 路径)。所以如果你使用 IDEA,你必须从 artifact screen 手动输入,否则你的 jar 不能正常工作。然后你可以把你的 jar 和你的 bacth 放在同一个文件夹下,然后像下面这样调用它:

    java -jar MyJarFile.jar
    

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多