我通过以下命令生成了 .class 文件:
javac -cp \directoryName\external.jar myPackageDirectory\First.java myPackageDirectory\Second.java
我需要在编译期间使用 -cp
和“外部”库 (external.jar) 的 .jar 文件的名称,以便能够从我的代码中使用该库。
使用我的 .class 文件,我按以下方式生成了我的 .jar 文件:
jar cfm app.jar manifest.txt myPackageDirectory\*.class
manifest.txt
只包含一行:
Main-Class: myPackageName.First
我的问题是我不确定我是否能够在其他计算机上运行我的 .jar 文件。我认为是因为在编译期间我指定了 .jar 文件的位置外部图书馆。因此,我的 .class 文件(包含在 .jar 文件中)将尝试在特定目录中查找外部库的 .jar 文件,并且不保证外部库的 .jar 文件将位于同一目录中就像在我的电脑上一样。
听说上面的问题可以通过a来解决
usage of a MANIFEST file that I include in my own jar, and which will list dependency locations
但我不明白它是如何工作的。我确实需要在编译阶段指定“external.jar”的位置(否则编译器会提示)。
最佳答案
首先:您似乎没有编译一个名为 MainClass
的类,并且您所有的 .java 文件似乎都在一个包中,所以我假设 MainClass
只是一个占位符,您实际上在这里使用了正确的类名。
您需要specify a Class-Path
header将您的外部 .jar 提到您的 manifest.txt
并将 .jar 文件与您的 jar 一起交付。除了在编译时指定 -cp
之外,您还需要执行此操作。
关于java - 如何在 list 文件中指定依赖项,然后将其包含到我的 .jar 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592115/