我在Linux系统上创建了一个java程序,它缩进并格式化给定的文件。我想让该程序像Linux中的命令一样工作,它将文件名和其他选项作为参数,然后生成输出。我可以使用C程序by just copying the compiled executable in /bin folder
执行此操作,但我不知道如何使用java。
答案 0 :(得分:1)
可能进一步提供帮助的示例脚本 -
#!/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
的当前目录中运行./test.sh filename arg1 arg2
答案 1 :(得分:0)
我认为这对您的案例很有用:http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/binfmt_misc.txt?id=HEAD
答案 2 :(得分:0)
您只需使用" java"运行Java类文件或jar文件即可。命令行命令。例如:
java -jar yourprogram.jar argument1 argument2
如果将此行保存在保存的文本文件中,例如" script.sh"然后给它执行权限,你可以双击或从终端输入./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命令。
答案 3 :(得分:0)
正如其他人指出的那样,最好使用小型shell脚本来运行Java应用程序。有几个开源产品可以帮助您包装Java代码以生成可运行的(一组).jar
(s)。
如果您已正确地将业务逻辑与接口分开(如您所愿),那么最好是Java应用程序解析命令行界面上给出的参数。为此,创建一个单独的类来解析这些参数并调用构成业务逻辑的类。当然,这将很快 - 如果不是立即 - 在编写用于Linux的解析器(如CLI参数)时。发生这种情况时,您可能希望考虑Apache Commons CLI project。
如果您不想使用任何包装应用程序/运行时,我的方法通常指向类路径中的所有类文件容器,并直接指向包含静态main方法的类:
java -cp "path_to_jar;path_to_class_folder;etc" "nl.owlstead.stackoverflow.LinuxMain"