1

我在我的 Linux 系统上创建了一个 java 程序,它可以缩进和格式化给定的文件。我想让该程序像 Linux 中的命令一样工作,它将文件名和其他选项作为参数,然后生成输出。我可以用 C 程序做到这一点,by just copying the compiled executable in /bin folder但我不知道如何用 java 做到这一点。

4

4 回答 4

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 filename arg1 arg2从 test.sh 所在的当前目录运行

于 2013-07-20T10:53:47.897 回答
0

我认为这对您的情况很有用:http ://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/binfmt_misc.txt?id=HEAD

于 2013-07-20T10:40:51.340 回答
0

您可以从命令行使用“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 命令。

于 2013-07-20T10:41:52.880 回答
0

正如其他人指出的那样,最好使用一个小的 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"
于 2013-07-20T10:49:47.630 回答