我绝对是星标中的纽比。我正在尝试使用asterisk-java通过AMI进行事件侦听。我目前使用的是11.2.1版本的星号。当我尝试将代码编译为
javac -cp asterisk-java-0.3.jar HelloEvents.java它成功地完成了。但是当我尝试执行这个文件时,我给出了以下错误。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloEvents
Caused by: java.lang.ClassNotFoundException: HelloEvents
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: HelloEvents. Program will exit.代码是
import java.io.IOException;
import org.asteriskjava.manager.AuthenticationFailedException;
import org.asteriskjava.manager.ManagerConnection;
import org.asteriskjava.manager.ManagerConnectionFactory;
import org.asteriskjava.manager.ManagerEventListener;
import org.asteriskjava.manager.TimeoutException;
import org.asteriskjava.manager.action.StatusAction;
import org.asteriskjava.manager.event.ManagerEvent;
public class HelloEvents implements ManagerEventListener
{
private ManagerConnection managerConnection;
public HelloEvents() throws IOException
{
ManagerConnectionFactory factory = new ManagerConnectionFactory(
"localhost", "manager", "password");
this.managerConnection = factory.createManagerConnection();
}
public void run() throws IOException, AuthenticationFailedException,
TimeoutException, InterruptedException
{
// register for events
managerConnection.addEventListener(this);
// connect to Asterisk and log in
managerConnection.login();
// request channel state
managerConnection.sendAction(new StatusAction());
// wait 10 seconds for events to come in
Thread.sleep(10000);
// and finally log off and disconnectaaaa
managerConnection.logoff();
}
public void onManagerEvent(ManagerEvent event)
{
// just print received events
System.out.println(event);
}
public static void main(String[] args) throws Exception
{
HelloEvents helloEvents;
helloEvents = new HelloEvents();
helloEvents.run();
}
}发布于 2015-10-21 13:29:19
java -cp ".;asterisk-java.jar" HelloEvents工作正常。并且类路径分隔符依赖于操作系统。如果您使用的是linux / mac,请使用:(冒号)代替;(分号)
发布于 2020-02-15 04:21:02
我们可以避免在编译或执行代码时每次都添加类路径。现在转到jar文件所在的位置。然后跑,
对于linux :- export CLASSPATH=$CLASSPATH:asterisk-java-2.0.3.jar:.
对于windows:- set CLASSPATH=$CLASSPATH:asterisk-java-2.0.3.jar:.
现在通过以下方式编译代码
javac HelloEvents.java
通过java HelloEvents执行它
https://stackoverflow.com/questions/17377421
复制相似问题