我正在尝试编写一个将执行我的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
答案 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