我在Eclipse中创建了4个不同的Java项目。
其中一个包含我的所有Utilities和Helper方法,其他3个项目使用。
我不想将同一个软件包复制到每个项目中3次,因为我希望能够在一个地方编辑它,如果我需要的话。所以,我从所有其他3个项目中引用了myUtilities项目。
我将导出3个主要项目,他们将转到不同的服务器以独立运行“java -jar myproject.jar”
每次我进行导出时,myUtilities.jar都没有在JAR中编译。如果我打开JAR,我可以看到它不存在。当我将它们移动到其他服务器时,这将成为一个问题。
有没有办法将包添加到JAR的源代码中?或者我是否必须将myUtilities.jar复制到每个服务器的JAVA_HOME中?
这是我目前的清单文件:
Manifest-Version: 1.0
Main-Class: com.elcool.process.alpha.RetrieverMain
答案 0 :(得分:1)
您可以在项目的清单(myproject.jar)中放置对外部实用程序jar(问题中的myUtility.jar)的引用。清单是项目jar中的文本文件,许多构建工具支持向其添加信息。
这样,您可以编译实用程序jar一次,在项目中引用它,并将它与三个主项目一起部署,可能在同一目录或附近的子目录中。
答案 1 :(得分:1)
您应该使用“导出” - > “Runnable Jar”可以正确包含依赖项目。
有三种不同类型的可运行jar,具体取决于你想要一个包含所有类的jar文件,一个带有依赖jar的jar文件和清单中正确的Class-Path,以及一个带有依赖的jar文件封闭的罐子和一个特殊的类加载器理解这一点。
答案 2 :(得分:0)
复制到JAVA_HOME?这不是做任何事情的方式。你永远不应该这样做。
如果它是一个Web项目,您必须将JAR复制到每个项目的WEB-INF / lib中。
如果它不是Web项目,则必须将JAR与主JAR打包并将其添加到CLASSPATH。我假设main是一个带有清单的可执行JAR,或者你有一个脚本来执行main,所以你可以将CLASSPATH封装到它中。
答案 3 :(得分:0)
您还可以在可执行jar文件MANIFEST.MF中添加Classpath引用,或者为更有经验的用户使用maven程序集插件,该插件将创建artefact,其所有依赖项都打包在一个jar中。
答案 4 :(得分:-1)
每次我进行导出时,myUtilities.jar都没有在JAR中编译。如果我打开JAR,我可以看到它不存在。
你是如何创造它的? jar文件刚刚用manifest文件重命名为zip,所以请考虑自己构建它以防你的工具不适合你的需要。