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