我在我的 Linux 系统上创建了一个 java 程序,它可以缩进和格式化给定的文件。我想让该程序像 Linux 中的命令一样工作,它将文件名和其他选项作为参数,然后生成输出。我可以用 C 程序做到这一点,by just copying the compiled executable in /bin folder
但我不知道如何用 java 做到这一点。
4 回答
可以进一步帮助的示例脚本 -
#!/bin/bash
#Set whatever number of arguments you expect for the Java jar you have
ARGS_EXPECTED=3
if [ $# -ne $ARGS_EXPECTED ]
then
echo "[$HOSTNAME]: Usage: `basename $0` filename arg1 arg2"
exit 1
fi
java -cp yourfile.jar com.yourpkg.Driver $1 $2 $3
将上述内容保存到文件中,比如 test.sh 并使用命令赋予可执行权限chmod +x test.sh
./test.sh filename arg1 arg2
从 test.sh 所在的当前目录运行
我认为这对您的情况很有用:http ://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/binfmt_misc.txt?id=HEAD
您可以从命令行使用“java”命令简单地运行 Java 类文件或 jar 文件。例子:
java -jar yourprogram.jar 参数1 参数2
如果将此行保存在一个文本文件中,例如另存为“script.sh”,然后授予它执行权限,则可以双击运行它或从终端键入 ./script.sh 在包含文件脚本的同一文件夹中。嘘。
您还可以生成使用 $1 $2 等参数的脚本,避免编辑文件的需要。 http://www.linuxquestions.org/questions/linux-newbie-8/how-to-pass-command-line-parameter-to-shell-script-254396/ 您也可以使用命名参数。
您还可以为新命令生成 C 程序,就像您建议的运行“java”命令一样。在这种情况下,您可以直接从终端引入参数并将它们传递给 C 源代码中的 java 命令。
正如其他人指出的那样,最好使用一个小的 shell 脚本来运行 Java 应用程序。有几个开源产品可以帮助您包装 Java 代码以生成可运行的(一组).jar
(s)。
如果您已正确地将业务逻辑与界面分离(正如您应该这样做的那样),那么最好您的 Java 应用程序解析命令行界面上给出的参数。为此,请创建一个单独的类来解析此类参数并调用构成业务逻辑的类。当然,这将很快导致 - 如果不是立即 - 为 Linux 编写解析器,如 CLI 参数。发生这种情况时,您可能希望考虑Apache Commons CLI 项目。
如果您不想使用任何包装应用程序/运行时,我的方法一般是指向类路径中的所有类文件容器,并直接指向包含静态 main 方法的类:
java -cp "path_to_jar;path_to_class_folder;etc" "nl.owlstead.stackoverflow.LinuxMain"