Search code examples
eclipseapache-flexred5

Red5 basic webapp not connectiong NetConnection.connect.failed


I am new to Red5. I decided to build my first app and went to https://github.com/Red5 to download the necessary software. So far I have installed jre 8, jdk 1.8, Maven, flex SDK 4.6 and Red5 1.0.5. I also have installed the eclipse plugin. I get an error in Application.java saying that that the hierarchy of the type Application is inconsistent and other messages complaining about not being able to resolve org.red5.server.api.Iconnect and org.red5.server.api.scope.IScope. I can clear those errors by deleting red5.server.jar from the build path and then adding it back. But I have to use org.red5.server.api.IScope instead of ...api.scope.IScope for it to work. At this point I guess I don't have the right red5.jar. I am not using flash builder to compile the client but mxmlc.exe that comes with flex. I get the swf file and then I run it but it won't connect(NetConnection.connect.failed). I am running it locally using Eclipse Mars.

Server

package org.red5.core;

import org.red5.logging.Red5LoggerFactory;
import org.red5.server.adapter.MultiThreadedApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
//import org.slf4j.Logger;

/**
 * Sample application that uses the client manager.
 * 
 * @author The Red5 Project ([email protected])
 */
public class Application extends MultiThreadedApplicationAdapter {

    //private static Logger log = Red5LoggerFactory.getLogger(Application.class);

    /** {@inheritDoc} */
    @Override
    public boolean connect(IConnection conn, IScope scope, Object[] params) {
        //log.info("appConnect");
        return true;
    }

    /** {@inheritDoc} */
    @Override
    public void disconnect(IConnection conn, IScope scope) {
        //log.info("disconnect");
        super.disconnect(conn, scope);
    }

}

Client

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute"
    creationComplete="onCreationComplete(event)">

    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.FlexEvent;

            private var connection:NetConnection;

            public function onCreationComplete(event:FlexEvent) : void {
                // setup connection code
                connection = new NetConnection();
                connection.connect("rtmp://localhost/Project");
                connection.addEventListener(NetStatusEvent.NET_STATUS, onConnectionNetStatus);
                connection.client = this;   
            }

            public function onConnectionNetStatus(event:NetStatusEvent) : void {
                // did we successfully connect
                if(event.info.code == "NetConnection.Connect.Success") {
                    Alert.show("Successful Connection", "Information");
                } else {
                    Alert.show("Unsuccessful Connection", event.info.code);
                }
            }

        ]]>
    </mx:Script>

</mx:Application>

When running the client.swf

[ERROR] [RTMPConnectionExecutor#OXEXJYYHVOTE2-1] org.red5.server.net.rtmp.BaseRTMPHandler - Exception
java.lang.NoClassDefFoundError: org/red5/server/api/IScope
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_45]
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_45]
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048) ~[na:1.8.0_45]
    at java.lang.Class.getMethod0(Class.java:3018) ~[na:1.8.0_45]
    at java.lang.Class.getMethod(Class.java:1784) ~[na:1.8.0_45]
    at org.red5.logging.Red5LoggerFactory.getLogger(Red5LoggerFactory.java:56) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.adapter.MultiThreadedApplicationAdapter.connect(MultiThreadedApplicationAdapter.java:297) ~[red5-server.jar:1.0.5-RELEASE]
    at org.red5.server.scope.Scope.connect(Scope.java:255) ~[red5-server-common-1.0.5-RELEASE.jar:na]
    at org.red5.server.BaseConnection.connect(BaseConnection.java:354) ~[red5-server-common-1.0.5-RELEASE.jar:na]
    at org.red5.server.net.rtmp.RTMPConnection.connect(RTMPConnection.java:398) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.RTMPMinaConnection.connect(RTMPMinaConnection.java:87) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.RTMPHandler.onCommand(RTMPHandler.java:347) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:105) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:57) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:11) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_45]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_45]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_45]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
Caused by: java.lang.ClassNotFoundException: org.red5.server.api.IScope
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) ~[tomcat-embed-core.jar:7.0.57]
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) ~[tomcat-embed-core.jar:7.0.57]
    ... 21 common frames omitted
[ERROR] [RTMPConnectionExecutor#DZX5W02SUWV7J-1] org.red5.server.net.rtmp.BaseRTMPHandler - Exception
java.lang.NoClassDefFoundError: org/red5/server/api/IScope
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_45]
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_45]
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048) ~[na:1.8.0_45]
    at java.lang.Class.getMethod0(Class.java:3018) ~[na:1.8.0_45]
    at java.lang.Class.getMethod(Class.java:1784) ~[na:1.8.0_45]
    at org.red5.logging.Red5LoggerFactory.getLogger(Red5LoggerFactory.java:56) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.adapter.MultiThreadedApplicationAdapter.connect(MultiThreadedApplicationAdapter.java:297) ~[red5-server.jar:1.0.5-RELEASE]
    at org.red5.server.scope.Scope.connect(Scope.java:255) ~[red5-server-common-1.0.5-RELEASE.jar:na]
    at org.red5.server.BaseConnection.connect(BaseConnection.java:354) ~[red5-server-common-1.0.5-RELEASE.jar:na]
    at org.red5.server.net.rtmp.RTMPConnection.connect(RTMPConnection.java:398) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.RTMPMinaConnection.connect(RTMPMinaConnection.java:87) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.RTMPHandler.onCommand(RTMPHandler.java:347) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:105) ~[red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:57) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask.java:11) [red5-server-common-1.0.5-RELEASE.jar:1.0.5-RELEASE]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_45]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_45]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_45]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
Caused by: java.lang.ClassNotFoundException: org.red5.server.api.IScope
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) ~[tomcat-embed-core.jar:7.0.57]
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) ~[tomcat-embed-core.jar:7.0.57]
    ... 21 common frames omitted
[WARN] [ConnectionChecker-1] org.red5.server.net.rtmp.RTMPConnManager - Connection OXEXJYYHVOTE2 has exceeded the max inactivity threshold
[WARN] [ConnectionChecker-1] org.red5.server.net.rtmp.RTMPConnManager - Connection not found for OXEXJYYHVOTE2

Solution

  • The scope package is required in later versions of red5. You seem to be compiling your app with an older version of the red5.jar and then deploying to a server running the newer version 1.0.5. Build and compile with the 1.0.5 red5.jar and your issue will be resolved.