1

我有一些使用 Eclipse 的 Java 代码,我想将它部署到 unix 环境中。该程序是一个简单的控制台程序,它只在运行时接受一些参数,读取文件并打印出一些结果。

我的问题是什么是在 unix 环境中部署和运行它的最佳方法。我只是想将所有类文件复制到 unix 环境并创建一个批处理文件来运行主类文件。这听起来好吗?或者,我应该创建一个可运行的 jar 文件吗?

另外,我应该把 prgram 引用的 jar 文件放在哪里(在类路径中)?

谢谢

4

5 回答 5

1

在我看来,易于部署的设计很重要。在我们的例子中,有一些组件:

  1. 将项目存储在源代码管理系统 (git) 中。我们将源代码分解为

    1. 开发分支的开发源代码
    2. 发布分支的稳定源代码
  2. 使用构建工具,例如 ant 或 maven,并在项目中提供部署脚本。(我们将在 3 中讨论部署脚本。)。

  3. 提供部署脚本:

    1. 在构建服务器中获取最新的稳定源代码
    2. 在构建服务器中构建可执行文件(无论您做什么)
    3. 将包发送到目标服务器
    4. 目标服务器中的启动器(关闭旧应用程序并运行新应用程序)(通过远程 ssh 命令)

目前,您认为如何打包java,但它只是构建和运行是一件简单的事情。当您谈论部署时,请使其尽可能简单。每次我们部署只是为了调用发布脚本。


PS。我不喜欢可执行的 jar。使用解包 jars 和编译类可以非常有效地通过 rsync 发送。

于 2012-07-26T12:51:53.030 回答
1

我认为一个可执行的 jar 文件将在这里解决您的目的。

你应该能够执行它

java -jar <jarfilename> <arguement1> <arguement2> .... <arguementN>

您可以从当前目录本身执行 jar 文件,只需确保您的 jar 文件具有可执行权限。

chmod +x <jarfilename>
ls -la
于 2012-07-25T14:51:58.683 回答
0

听起来不错,对你有用。只有一个解决方法:您将为 unix 编写 shell 脚本,而不是批处理文件。

但你可以做得更好。通常将 java 类打包到 jar 文件中。Jar 文件只是一个 zip 文件,其中包含可选的META-INF、目录MANIFEST.MF和其他内容。所以最好把你的应用打包成jar,然后运行为:java -cp yourjar.jar YourMainClass.

要创建 jar 文件,您可以使用任何可以创建jar作为 JDK 一部分的 zip 或实用程序的工具。您还可以使用 ant、maven、gradle、bildr 等创建自动构建,这将帮助您打包您的应用程序。

于 2012-07-25T14:50:45.703 回答
0

我发现这是最快的:

首先,创建一个jar,复制到unix服务器并更改文件权限,就像下面提到的dopplesoldner一样。

您可以将库类和/或 jar 依赖项放在lib文件夹中

然后执行jar

 java -Djava.ext.dirs=lib/ -classpath yourJar.jar com.yourPackage.yourClass

yourClass将是具有main(String args[])您想要执行的方法的类。

于 2012-07-25T14:58:43.640 回答
0

我会做以下事情:

  1. 为此程序创建一个专用目录。将依赖的 .jar 文件复制到该目录
  2. 编写一个(短)脚本,将类路径设置为指向这些 jar,然后执行主类

鉴于上述情况,您是否创建可运行的 .jar 在很大程度上是一个风格问题。它将对用户隐藏。

我建议一个脚本,因为:

  1. 您可以轻松设置常用的 JVM 参数(内存选项等)
  2. java -jar {pathtojar}打字等很痛苦(而且几乎不直观) 。

通过将 jar 复制到专用目录,您可以为不同的脚本使用不同版本的 jar(例如,您可能有 2 个程序使用两个不同版本的 commons-lang)

您还应该(可能)使用此脚本来明确确定您使用哪个版本的 Java 来运行程序。当您安装/升级时,您不想破坏您的程序,并且可以将脚本配置为明确绑定此信息。

于 2012-07-25T14:54:19.917 回答