我试图在批处理文件中调用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类中找不到主要方法
Library是一个接口,我调用的java程序使用该接口。但cmd表示如果没有main,它就无法加载它。我必须用它来达到jna。
答案 0 :(得分:0)
您必须指定ClassPath“-cp”:java -cp [jar的路径] [要运行的类文件]
检查this
答案 1 :(得分:0)
如果您使用 JNA 并且想要从批处理文件中调用使用其库的java程序,则必须避免使用java文件。因为当你从批处理中调用jna.jar时它也无法在运行时加载类。
我的代码就像:
@ECHO OFF
java -jar jna-4.1.0.jar
java MyBenchmark
我也尝试了很多其他解决方案,但没有任何效果(我也在问题部分使用了代码)。
最后,我尝试将我的项目导出为jar并使用它。首先,我想声明我的IDE是 Intellij IDEA 。它不能把项目依赖项放到我的清单文件(jna路径),虽然我已经把jar依赖。因此,如果您使用IDEA,则必须手动从工件屏幕输入,否则您的jar无法正常工作。然后你可以把你的jar放在与你的bacth相同的文件夹下,然后像下面这样调用它:
java -jar MyJarFile.jar