AntでFTP

jarが二個いるよ。
commons-net-2.0.jar
http://commons.apache.org/downloads/download_net.cgi
jakarta-oro-2.0.8.jar
http://jakarta.apache.org/site/downloads/downloads_oro.cgi

このjarをeclipseでウィンドウ>設定>Ant>ランタイム>Jarの追加。

  <target name="hoge">
    <ftp action="get"
         server="localhost"
         remotedir="/home/usrname"
         userid="user"
         password="pass">
      <fileset dir="getdir">
        <include name="**/*.log"/>
      </fileset>
    </ftp>
  </target>

uploadとかdeleteとかいろいろできるんだけどとりあえずdownloadがしたいのであった。

2008/11/17 追記

別環境で実行したらこんなエラーが出た。

BUILD FAILED
java.lang.UnsupportedClassVersionError: org/apache/commons/net/ftp/FTPClient (Unsupported major.minor version 49.0)

で、調べた
http://www.ne.jp/asahi/hishidama/home/tech/java/application.html#Java-version

Javacでコンパイルするとclassファイルが作られるが、classファイルの中には「どのバージョンのJavaVMで実行できるか」という“Javaクラスの形式”のバージョンが書かれる。
JavaVM(javaコマンド)では実行できるバージョンが限られており、自分より新しいバージョンで作られたclassファイルは実行することが出来ない(古すぎてもダメ)。
classファイルのメジャーバージョン/マイナーバージョンは、javacの-targetで指定した対象JavaVMバージョンの値によって異なってくる。-targetを省略した場合は-sourceの値に左右される。

  • targetで指定するのは1.4とか1.5とか1.6というJREの仕様バージョンだが、classファイル内に保持されている値は48.0とか49.0とか50.0という数字(Javaクラスの形式のバージョン)。


今回の場合、commons-net-2.0.jar、jakarta-oro-2.0.8.jarはJRE1.5用にコンパイルされていたけど、実行環境が1.4.2だったためバージョンがあわずエラーが起きた。
対処としてはパッケージ・エクスプローラでbuild.xmlを右クリック>実行>Antビルド(Antビルド Alt+Shift+X,QとAntビルド...の二つあるけど下のほう!)>JREタブ選択>JREの分離でj2sdk1.4.2_10が選択されていたので、
「インストール済みのJRE」ボタン押してjdk1.5.0_09のインストールされているフォルダを選択し、変更(もちろん先にインストールしておく必要あり)。