0

私は JavaJava Server の両方の世界にまったく慣れていませんが、オブジェクト指向プログラミングについては十分な知識 (17 年) があります。私の質問は:

なぜそれを機能させるために ant を呼び出さなければならないのですか (後で参照してください。興味がなければ、質問を飛ばしてください ^_^ )

ここに私が望むものがあります: ビデオ会議を行うことができる単純なアプリケーションを作成します (= サーバーは 1 つのクライアント ビデオ ストリームを受信し、それを X クライアントにディスパッチします)。私はそれを無料にしたかった (Adobe Server は 10000 ドル程度の費用がかかる)。私が見つけた唯一の解決策はRed5です(そこを参照)

0.7 バージョンをダウンロードしてインストールしました。Red5 用の Java アプリケーションを正常にコンパイルできるようにするために行った手順は次のとおりです。

  1. 最新リリース (0.7) をダウンロードしてインストール (Windows XP)
  2. 0.7のインストールで忘れられたいくつかのファイルをインストールフォルダーに手動でダウンロードしてコピーします(v0.6リリースと比較して、どれかを推測してください)(ivy.xml覚えていれば)
  3. [Red5 path]\webappsフォルダに入ります。フォルダをコピーして貼り付けtutorialます。
  4. フォルダの名前を に変更しますmyapp
  5. そのフォルダー内のすべてのxmlファイルを編集し、文字列tutorial を検索して名前を変更しますmyapp
  6. これが私がしたことで、うまくいきませんでし:javacでコンパイルします:
    javac -classpath "[Red5 path]\red5.jar" -d "[Red5 path]\webapps\myapp\WEB-INF\classes" Application.java javac -classpath "[Red5 path]\red5.jar" -d "[Red5 path]\webapps\myapp\WEB-INF\classes" TestService.java
  7. すべてが正常に機能しましたが、Flex クライアントを起動すると、サーバーからの応答は「無効なアプリケーション」でした
  8. 何度も試してみたところ、そのコードを除いてすべてを削除すると、すべてが機能することがわかりました。

    package myapp;
    
    import org.red5.server.adapter.ApplicationAdapter;
    import org.red5.server.api.IConnection;
    import org.red5.server.api.IScope;    
    
    /* myapp */
    public class Application extends ApplicationAdapter {
    
    
    public String sayHello(Object[] params){
        return "got : " + params[0].toString();
    }
    
    }

それから、トレースできるようになりたいと思いました。

  1. Red5の例で動作していたコードを書きました:

    package myapp;

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; import org.red5.server.api.IScope;

    public class Application extends ApplicationAdapter {

    protected static Logger log = LoggerFactory.getLogger(Application.class);
    
    public String sayHello(Object[] params){
        log.info("I got your name: "+params[0].toString());
        return "I got your name: " + params[0].toString();
    }
    

    }

  2. Red5サーバーを再起動した後:サーバーから常に「無効なアプリケーション」という応答がありました

  3. 次に、 antをダウンロードし、[Red5 path]
  4. 新しいファイルを作成しました[Red5 path]\webapps\myapp\WEB-INF\build.xml
  5. そのxmlを入れました:
<project name="Projet myapp" default="compile" basedir=".">
    <target name="clean" description="Clean output directories">
    </target>
    <target name="compile" depends="clean">
        <javac srcdir="./src" destdir="./classes" source="1.6" classpath="C:\Program Files\Red5\red5.jar" >
        </javac>
    </target>
    <target name = "jar" depends ="compile">
        <echo message ="Creating jar..."/>
        <jar destfile="./lib/myapp.jar" basedir="./classes"/>
        <echo message ="Done."/>
    </target>
</project>
  1. シェルを実行し、次のように入力します。
    cd [Red5 path]\webapps\myapp\WEB-INF
    ......\apache-ant-1.7.1\bin\ant jar
  2. すべてが正常に動作するようになりました!
  3. ここで質問です!
  4. 私が理解できないのは、
    なぜそれを機能させるために ant を呼び出さなければならないのですか?
4

1 に答える 1

4

Antは、コードをコンパイル(ターゲットをコンパイル)し、jarファイル(ターゲットjar)をビルドします。このファイルはlibフォルダーに配置されます。javacを使用してコードをコンパイルするだけでは、jarファイルは生成されません。

于 2009-05-13T11:02:31.220 に答える