how to build Executable jar to return string to shell script(如何构建可执行JAR以将字符串返回到外壳脚本)
本文介绍了如何构建可执行JAR以将字符串返回到外壳脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我必须从外壳脚本运行可执行JAR文件才能获得字符串值。可执行JAR不能返回值,因为Main返回空。我无法使用System.exit(Int),因为JAR必须返回字符串类型的值。请提出建议。
推荐答案
此数据应写入标准输出(在JAVA中为System.out
),并使用$(command expansion)
捕获。
以下是所有优秀的Unix公民(以及太少的Java程序)应该确保做的事情:
- 将程序结果写入标准输出(System.out)
- 将错误消息和调试写入stderr(System.err)
- 使用
System.exit(0)
表示成功(如果未使用System.exit,这也是默认设置) - 使用
System.exit(1)
(或更高,最多255)表示失败
这里有一个完整的示例来演示Java和外壳脚本之间的相互作用:
$ cat Foo.java
class Foo {
public static void main(String[] args) {
System.out.println("This data should be captured");
System.err.println("This is other unrelated data.");
System.exit(0);
}
}
一个非常基本的清单:
$ cat manifest
Main-Class: Foo
一个简单的外壳脚本:
#!/bin/sh
if var=$(java -jar foo.jar)
then
echo "The program exited with success."
echo "Here's what it said: $var"
else
echo "The program failed with System.exit($?)"
echo "Look at the errors above. The failing output was: $var"
fi
现在让我们编译和构建JAR,并使脚本可执行:
$ javac Foo.java
$ jar cfm foo.jar manifest Foo.class
$ chmod +x myscript
现在运行它:
$ ./myscript
This is other unrelated data.
The program exited with success.
Here's what it said: This data should be captured
这篇关于如何构建可执行JAR以将字符串返回到外壳脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何构建可执行JAR以将字符串返回到外壳脚本
基础教程推荐
猜你喜欢
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01