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

当类扩展Java中的另一个类时,在main方法中传递参数,java,Java,我正在尝试运行asteriskjava的脚本,如下所示。我添加了一个main方法,并在其中调用service方法,如下所示: import org.asteriskjava.fastagi.AgiChannel; import org.asteriskjava.fastagi.AgiException; import org.asteriskjava.fastagi.AgiRequest; import org.asteriskjava.fastagi.BaseAgiScript; publi

我正在尝试运行
asteriskjava
的脚本,如下所示。我添加了一个
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
方法的实例?

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

与您的情况一样,
请求
频道
变量均未创建。这就是为什么出现错误
找不到符号

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

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

您没有从命令行将任何参数放入main方法中。你应该写一些类似的东西

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);
 } 

这是意料之中的。调用asteriskService.service(请求,通道)中提供的两个参数没有在
main
方法中定义。我以前从未听说过asterisk java,所以我只是在谷歌上搜索它,并阅读主页上链接的教程:。它解释了脚本应该由服务器运行。您没有编写main方法。您将类放在一个服务器中,该服务器将调用您的方法。阅读教程。这就是它的用途。嘿,德雷德,你怎么能期望字符串分配给
agirest=args[0]处的对象@DKAnsh,你好。这只是一个常见的例子。实际上,我不知道什么是AgiRequest和AgiChannel。有没有可能是他自己的类,它就像一根弦。无论如何,问题是如何将参数传递给实例它们是来自
asteriskjava
的模块。我正在使用
jar
file.Ok编译它们。如果在第一次回答后你没有任何例外,你不接受我的回答也没关系。我试过你的解决方案。我得到了这个错误:
agrequest是抽象的。无法实例化@Laxman,正如JB Nizet在您的帖子评论中所建议的那样。它应该在服务器上运行。你不需要有主要的方法。服务器将调用您的服务方法。请检查一下