2017-07-17 24 views
0

免责声明:我是不是是Java开发人员。javac:使用参数时无效标志错误

我有一个shell脚本将变量传入我的java程序。

#!/bin/bash 
$JAVA_HOME/javac -classpath $clp myjavaapp.java "$1" "$2" "$3" 

当我运行该脚本,我得到以下错误:

javac: invalid flag: /public/rest/api/1.0/cycles/search?versionId=-1&projectId=10005 
Usage: javac <options> <source files> 
use -help for a list of possible options 

哪里/public/rest/api/1.0/cycles/search?versionId=-1&projectId=10005是值传递它的$3

这里是我的myjavaapp.java文件的内容示例:

package myjavaapp; 

... 

public class myjavaapp { 

    public static void main(String[] args) throws URISyntaxException, IllegalStateException, IOException { 

     ... 

     String variable1 = args[0]; 
     String variable2 = args[1]; 
     String variable3 = variable2 + args[2]; 

     ... 

    } 

} 

我在做什么错?我是否正确使用参数?

+1

你想编译你的程序还是执行它? –

回答

2

问题可能是$clp变量的值是/public/rest/api/1.0/cycles/search?versionId=-1&projectId=10005而且这对于javac不是有效的选项。
首先检查其值。

然后,传递的参数"$1" "$2" "$3"是没有意义的:

$JAVA_HOME/javac -classpath $clp myjavaapp.java "$1" "$2" "$3" 

javac命令编译类(ES),不用于运行应用程序。
您可能将它与允许运行可执行类(应用程序)并接受参数的java命令混合使用。

+0

哦,男人,我觉得愚蠢。你最后一点是我的问题。我只需要在运行应用程序的时候传递我的值。谢谢! '$ JAVA_HOME/javac -classpath $ clp myjavaapp.java'和'$ JAVA_HOME/java -classpath $ clp myjavaapp.java“$ 1”“$ 2”“$ 3”'工作。 – user3225982

+0

不客气。有了这样的声明,不要对自己粗鲁;-) – davidxxx

+0

@ user3225982每当你感到哑巴你学习:) – talex