通过bash shell编译并执行java

时间:2014-01-28 04:59:15

标签: java linux bash shell jar

我正在尝试编写一个将执行我的Java程序的shell代码。我试过这个:

#!/bin/sh
COMPILECMD="javac server.jar"
RUNCMD="java -jar server.jar 12777"

$COMPILECMD
$RUNCMD

但我收到了这个错误:

  

错误:类名称'server.jar'仅在注释时被接受   明确请求处理1错误无法加载Main-Class   来自server.jar的manifest属性

在命令行中我不使用jar文件,我只是编译然后执行:

javac server.java 
java server 12777

2 个答案:

答案 0 :(得分:2)

从shell构建Java程序到JAR文件的典型方法是使用ant实用程序。

它的主页(和文档)在这里:http://ant.apache.org/

基本上,您在项目文件夹中编写(或使用工具编写)build.xml,然后运行ant进行编译,捆绑等工作。

(免责声明:我不是Ant的粉丝,但我认为 是Java Universe中用于此任务的最常见/最受欢迎的工具。 )


如果您熟悉它们, 也可以使用传统的Unix Makefile。一些规则如:

     CLASSES= Server.class Supporting.class

     %.class:   %.java
           javac $<

     %.jar:  $(CLASSES) Manifest.mf
           jar cfm $@ Manifest.mf $(CLASSES)

可以也使用直接的shell脚本:

      javac Server.java
      javac Supporting.java
      jar cfm Server.jar Manifest.mf Server.class Supporting.class

但是,如果您的项目超出了几个档案,那么维持这一点可能会成为一场噩梦。


还有其他可用的工具,但这些是我所知道的最典型的工具。

答案 1 :(得分:1)

我认为你理解错了。 jar是由jar命令创建的,而不是由javac命令创建的。

jar命令创建一个jar文件(包含里面所有类的zip文件) javac命令只是编译和转换.java到.class

示例compile-command:

javac server.java; jar cvf server.jar server.class

您可以找到以下链接帮助。 http://docs.oracle.com/javase/tutorial/deployment/jar/build.html