我使用Eclipse在Java中有一些代码,我想将它部署到unix环境中。该程序是简单的控制台程序,只需在运行时获取一些参数,读取文件并打印出一些结果。
我的问题是什么是在unix环境中部署和运行它的最佳方法。我只是想将所有类文件复制到unix环境并创建一个批处理文件来运行主类文件。听起来不错吗?或者,我应该创建一个可运行的jar文件吗?
另外,我应该在哪里放置prgram引用的jar文件(在类路径中)?
由于
答案 0 :(得分:1)
我认为可执行jar文件将在此处解决您的目的。
您应该能够以
执行它java -jar <jarfilename> <arguement1> <arguement2> .... <arguementN>
您可以从当前目录本身执行jar文件,只需确保您的jar文件具有可执行权限。
chmod +x <jarfilename>
ls -la
答案 1 :(得分:1)
在我看来,设计易于部署非常重要。 在我们的例子中,有一些组件:
将项目存储在源代码管理系统(git)中。我们将源代码分解为
使用构建工具,例如ant或maven,并在项目中提供部署脚本。 (我们将在3中讨论部署脚本。)。
提供部署脚本:
目前,您认为如何打包java,但只是构建和运行它是一件简单的事情。当您谈到部署时,请尽可能简化。每次我们部署只是为了调用发布脚本。
PS。我不喜欢可执行jar 。使用非打包jar和编译类可以非常有效地通过rsync发送。
答案 2 :(得分:0)
听起来不错,对你有用。只需一个修复:您将为unix而不是批处理文件编写shell脚本。
但你可以做得更好。通常,java类被打包到jar文件中。 Jar文件只是一个zip文件,带有可选的META-INF
,目录,MANIFEST.MF
和其他内容。因此,最好将应用程序打包到jar中,然后将其运行为:java -cp yourjar.jar YourMainClass
。
要创建jar文件,您可以使用任何可以创建作为JDK一部分的zip或实用程序jar
的工具。您还可以使用ant,maven,gradle,bildr等创建自动构建,以帮助您打包应用程序。
答案 3 :(得分:0)
我会做以下事情:
鉴于上述情况,你是否创建了一个可运行的.jar,这在很大程度上取决于风格。它将对用户隐藏。
我建议使用脚本,因为:
java -jar {pathtojar}
等等是一种痛苦(而且很难直观)。通过将罐子复制到专用目录,您可以为不同的脚本使用不同版本的罐子(例如,您可能有2个程序使用两个不同版本的commons-lang)
您还应该(可能)使用此脚本显式确定用于运行程序的Java版本。在安装/升级时,您不希望破坏程序,并且可以配置脚本以明确地限制此信息。
答案 4 :(得分:0)
我发现这最快:
首先,创建一个jar,复制到unix服务器并更改文件权限,就像下面提到的dopplesoldner一样。
您可以将库类和/或jar依赖项放在lib
文件夹
然后执行jar
java -Djava.ext.dirs=lib/ -classpath yourJar.jar com.yourPackage.yourClass
yourClass
将是您想要执行main(String args[])
方法的类。