运行 Java 包含 2 个参数的文件,使用在 Cygwin 中启动的 perl 脚本
Running Java file with 2 args using perl script launched in Cygwin
我正在尝试编写一个 Perl 脚本来启动我的 Java 程序。
我正在尝试在 Windows 10.
中使用 Cygwin 执行它
Java 程序的 main 方法需要两个参数。
主要方法如下所示
public static void main(String[] args) throws InterruptedException, IOException
{
String ipAddress = args[0];
int port = Integer.parseInt(args[1]);
ACPCGame acpc1 = new ACPCGame();
acpc1.play(ipAddress, port);
}
然后我将我的 Perl 脚本称为 canarybot.pl
。
my @args = ("java", "-jar", "canarybot.jar", "localhost", "55001");
system(@args);
localhost
和 55001
应该是 Java main 方法期望的两个参数。
然后我在包含 Perl 脚本和 jar
文件的目录中打开一个 Cygwin bash 提示符并尝试像这样执行它
./canarybot.pl
这会导致错误
./canarybot.pl: line 1: syntax error near unexpected token '('
./canarybot.pl: line 1: my @args = ("java", "-jar", "canarybot.jar", "localhost', "55001");
错误 syntax error near unexpected token
是 shell 错误。你要求 Cygwin shell 执行一个 Perl 程序,当然它在那个上下文中是胡说八道
您可以使用
perl canarybot.pl
或者您可以添加一个
shebang line
#!perl
到程序的开头,这将导致 Cygwin shell 在 PATH 上查找 perl
并使用它来执行后续代码,而不是尝试自己解释它
但我看不出有任何理由在这里使用 Cygwin。在 Windows cmd
提示符下,您可以使用命令
canarybot.pl
Windows 将开始在当前工作目录中搜索文件,并且它将使用注册表来确定如何处理 .pl
文件类型。根本不需要 shebang 行
这已通过编辑 Perl 脚本以使用 shebang 行以及 java.exe 文件的确切路径解决,如下所示:
#!/usr/bin/perl
my @args = ("/cygdrive/c/Program\ Files/Java/jdk1.8.0_152/bin/java.exe", "-jar", "canarybot.jar", "localhost", "55001");
my $ret = system(@args);
我正在尝试编写一个 Perl 脚本来启动我的 Java 程序。
我正在尝试在 Windows 10.
中使用 Cygwin 执行它Java 程序的 main 方法需要两个参数。
主要方法如下所示
public static void main(String[] args) throws InterruptedException, IOException
{
String ipAddress = args[0];
int port = Integer.parseInt(args[1]);
ACPCGame acpc1 = new ACPCGame();
acpc1.play(ipAddress, port);
}
然后我将我的 Perl 脚本称为 canarybot.pl
。
my @args = ("java", "-jar", "canarybot.jar", "localhost", "55001");
system(@args);
localhost
和 55001
应该是 Java main 方法期望的两个参数。
然后我在包含 Perl 脚本和 jar
文件的目录中打开一个 Cygwin bash 提示符并尝试像这样执行它
./canarybot.pl
这会导致错误
./canarybot.pl: line 1: syntax error near unexpected token '('
./canarybot.pl: line 1: my @args = ("java", "-jar", "canarybot.jar", "localhost', "55001");
错误 syntax error near unexpected token
是 shell 错误。你要求 Cygwin shell 执行一个 Perl 程序,当然它在那个上下文中是胡说八道
您可以使用
perl canarybot.pl
或者您可以添加一个 shebang line
#!perl
到程序的开头,这将导致 Cygwin shell 在 PATH 上查找 perl
并使用它来执行后续代码,而不是尝试自己解释它
但我看不出有任何理由在这里使用 Cygwin。在 Windows cmd
提示符下,您可以使用命令
canarybot.pl
Windows 将开始在当前工作目录中搜索文件,并且它将使用注册表来确定如何处理 .pl
文件类型。根本不需要 shebang 行
这已通过编辑 Perl 脚本以使用 shebang 行以及 java.exe 文件的确切路径解决,如下所示:
#!/usr/bin/perl
my @args = ("/cygdrive/c/Program\ Files/Java/jdk1.8.0_152/bin/java.exe", "-jar", "canarybot.jar", "localhost", "55001");
my $ret = system(@args);