2012-07-25 51 views
1

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

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

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

谢谢

回答

0

这听起来不错,并会为你工作。只需要一个修正:您将为unix编写shell脚本,而不是批处理文件。

但是你可以做得更好。通常将java类打包成jar文件。 Jar文件只是一个zip文件,可选META-INF,目录,MANIFEST.MF和其他东西。所以最好将应用程序打包成jar,然后运行它:java -cp yourjar.jar YourMainClass

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

1

我认为一个可执行的jar文件将解决你的目的。

您应该能够执行它

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

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

chmod +x <jarfilename> 
ls -la 
0

我会做到以下几点:

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

鉴于上述情况,这主要是因为风格问题是否创建可运行的.jar或不。它将被用户隐藏。

我建议一个脚本,因为:

  1. 您可以轻松地设置经常使用JVM参数(内存选项等)
  2. 这是一个痛苦(而难以直观)键入java -jar {pathtojar}

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

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

0

我觉得这是最快的是:

首先,创建一个jar,复制到Unix服务器和同样dopplesoldner下文提到的更改文件权限。

你可以把你的类库和或JAR依赖于lib文件夹

然后执行罐子

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

yourClass将是上课main(String args[])方法,你想执行。

1

为便于部署,设计很重要。 在我们的案例,其中有一些组件:在源代码管理系统(GIT)

  1. 存储项目。我们打破源代码

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

  3. 提供部署脚本:

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

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


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

相关问题