在unix中运行java控制台程序

时间:2012-07-25 14:47:49

标签: java

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

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

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

由于

5 个答案:

答案 0 :(得分:1)

我认为可执行jar文件将在此处解决您的目的。

您应该能够以

执行它
java -jar <jarfilename> <arguement1> <arguement2> .... <arguementN>

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

chmod +x <jarfilename>
ls -la

答案 1 :(得分:1)

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

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

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

  3. 提供部署脚本:

    1. 在构建服务器中获取最新的稳定源代码
    2. 构建到构建服务器中的可执行文件(无论你做什么)
    3. 将包发送到目标服务器
    4. 启动器(关闭旧应用并运行新应用)在目标服务器中(通过远程ssh命令)
  4. 目前,您认为如何打包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)

我会做以下事情:

  1. 为此程序创建一个专用目录。将依赖的.jar文件复制到该目录
  2. 编写一个(短)脚本,将类路径设置为指向这些jar,然后执行主类
  3. 鉴于上述情况,你是否创建了一个可运行的.jar,这在很大程度上取决于风格。它将对用户隐藏。

    我建议使用脚本,因为:

    1. 您可以轻松设置常用的JVM参数(内存选项等)
    2. 输入java -jar {pathtojar}等等是一种痛苦(而且很难直观)。
    3. 通过将罐子复制到专用目录,您可以为不同的脚本使用不同版本的罐子(例如,您可能有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[])方法的类。