好的......这是我的步骤。
桌面上有一个文件夹。让我们称之为DesktopFolder。在桌面文件夹中,我有2个文件夹。一个叫做libs,一个叫做src。里面的libs是两个jar依赖项。让我们称他们为jar1和jar2。在src里面,我有一个java文件。我们称之为MyProgram.java 所以我用cmd编译它们
javac -cp .;../libs/jar1;../libs/jar2; MyProgram.java
编译。 现在我在我的src文件夹中创建一个manifest.txt,其中包含以下内容:
Main-Class: MyProgram
Class-Path: ../libs/jar1 ../libs/jar2
<a new line>
然后在我的cmd中,我导航到我的src目录并执行:
jar -cvfm MyProgramJar.jar manifest.txt ./../libs MyProgram.class
这会编译一个名为MyProgramJar的jar文件 这是在我的src中找到的(因为我将我的cmd目录导航到了src) 当我运行可执行文件时,它的工作原理。 但是当我将MyProgramJar移到桌面外时 它说它找不到图书馆。这是为什么?我该如何解决?
错误本身就是JNI错误。
答案 0 :(得分:0)
hmmmm。感谢@MadProgrammer(来自评论部分)。我了解到jar文件无法从内部访问另一个jar文件。放入清单的类路径是所有相对类路径。将jar文件移到外面后,它将无法找到程序所依赖的文件。有很多方法可以像#34;胖&#34; Madprogrammer提到的罐子允许jar从内部访问另一个jar。
另一种方法是打开依赖jar并简单地将文件移出自己的jar。这样,您的代码可以直接引用这些库。
我的一位私人朋友用eclipse来制作罐子。即使你在罐子里有一个罐子并且你移动罐子,这似乎也有效。我假设eclipse做了类似于&#34;胖&#34;罐。