繁体   English   中英

当类扩展Java中的另一个类时,在main方法中传递参数

[英]Pass argument in main method when class extends another class in Java

我正在尝试为asterisk-java运行脚本,如下所示。 我添加了一个main方法,并在其中调用了service方法,如下所示:

import org.asteriskjava.fastagi.AgiChannel;
import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.BaseAgiScript;

public class HelloAgiScript extends BaseAgiScript
{
    public void service(AgiRequest request, AgiChannel channel)
            throws AgiException
    {
        // Answer the channel...
        answer();

        // ...say hello...
        streamFile("welcome");

    // ...and hangup.
        hangup();
    }

    public static void main (String[] args) 
    {
    HelloAgiScript asteriskService = new HelloAgiScript();
    asteriskService.service(request, channel);
    }    
}

当我尝试使用以下命令进行编译时:

javac -cp asterisk-java.jar HelloAgiScript.java

我收到此错误:

HelloAgiScript.java:24: error: cannot find symbol
        asteriskService.service(request, channel);
                                ^
  symbol:   variable request
  location: class HelloAgiScript
HelloAgiScript.java:24: error: channel has private access in AgiOperations
        asteriskService.service(request, channel);
                                         ^
2 errors

如何将参数传递给main方法内的service方法的实例?

您需要将参数作为AgiRequestAgiChannel类的对象传递给service()方法调用。

与您的情况一样,都不会创建requestchannel变量。 这就是为什么您遇到错误Can't find symbol

您的主要方法应如下所示:

public static void main (String[] args) 
{
    HelloAgiScript asteriskService = new HelloAgiScript();
    AgiRequest request = new AgiRequest();
    AgiChannel channel = new AgiChannel();
    asteriskService.service(request, channel);
 }  

您没有从命令行在主方法中放入任何参数。 你应该写类似

javac -cp asterisk-java.jar par1, par2

但是,首先,您应该定义哪个参数应该是您的内部参数,例如

public static void main (String[] args) 
{
    HelloAgiScript asteriskService = new HelloAgiScript();
    AgiRequest request = args[0];
    AgiChannel channel = args[1];
    asteriskService.service(request, channel);
 } 

这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM