![](/img/trans.png)
[英]Java: How to call upon a method in a main class where the method is in another class which extends an abstract class
[英]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
方法的实例?
您需要将参数作为AgiRequest
和AgiChannel
类的对象传递给service()
方法调用。
与您的情况一样,都不会创建request
和channel
变量。 这就是为什么您遇到错误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.