Announcement

Collapse
No announcement yet.

Ftp Client mit Java 5

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ftp Client mit Java 5

    Hallo,

    ich bin vor kurzem auf Java 5 (1.5) umgestiegen und musste mit bedauern feststellen, dass mein Ftp Programm, was ich geschrieben habe, nicht mehr funzt.

    Ich habe folgendes benutzt:

    public ftp() throws Exception {

    try {
    // TODO: Code ...

    // neuen FTP-Client erstellen
    // 1. Argument: String ftpServer
    // 2. Argument: int port
    FtpClient client = new FtpClient(domain, 21);

    // einloggen
    // 1. Argument: String user
    // 2. Argument: String password
    client.login("ftp.xxxxxx.de.xxx", "password");

    // Zu Ordner wechseln
    // 1. Argument: String dir
    client.cd(ftp_dir);
    ...
    <br>
    Bei der ersten Zeile...
    <br>
    Code:
    <i>FtpClient client = new FtpClient(domain, 21); </i>

    wirft er mir schon eine Exception...

    Code:
    <i>java.lang.VerifyError: (class: ftp/ftp, method: <init> signature: ()V) Incompatible object argument for function call
    Exception in thread "main" </i>

    Warum funzt das nicht mehr...?
    <br>
    Für Hilfe wäre ich dankbar!
    <br>
    Hachel

  • #2
    Hallo Hachel,

    schwierig zu helfen bei der mickrigen Information. Wie ist die Klasse FtpClient definiert, wie sieht konkret der/die Konstruktor(en) aus? Was ist domain?

    Gruß

    Wolfgan

    Comment


    • #3
      Hallo Wolfgang,
      die Domain habe ich nicht aufgeführt... geht keinem wat an ne... Auf jedenfall läuft der Code unter Java 1.4.2...

      Anbei der gesmate Code..

      <br>
      <i>
      /*
      * ftp.java
      *
      * Created on 12. März 2004, 01:02
      */

      package ftp;

      import java.io.*;
      import sun.net.*;
      import sun.net.ftp.*;
      import java.net.*;
      import java.util.HashMap;

      /**
      *
      * @author Hachel
      */
      public class ftp {

      public String s="";
      private HashMap file_list=new HashMap();
      private String protocol="http";
      private String domain="www.xxxxxxx.de";
      private String ftp_dir="ordner auf FTP";

      /** Creates a new instance of ftp */
      public ftp() throws Exception {

      try {
      // TODO: Code ...

      // neuen FTP-Client erstellen
      // 1. Argument: String ftpServer
      // 2. Argument: int port
      FtpClient client = new FtpClient(domain, 21);

      // einloggen
      // 1. Argument: String user
      // 2. Argument: String password
      client.login("ftp.xxxxxxx.de.xxxx", "passwort");

      // Zu Ordner wechseln
      // 1. Argument: String dir
      client.cd(ftp_dir);

      // Dateien auflisten
      // Rückgabe: TelnetInputStream files
      DataInput files = new DataInputStream(client.list());
      // TODO: Code zum Einlesen

      int i=0;
      while ((s=files.readLine())!=null) {
      file_list.put(i+"", s);
      i++;
      }

      // Auslesen der Files und nicht der gesamte Inputstream
      String file_name="", tmp_string="", tmp="";
      java.util.StringTokenizer tk;
      for (int a=0; a<file_list.size(); a++) {
      file_name=file_list.get(a+"").toString();
      tk=new java.util.StringTokenizer(file_name);
      int tk_zaehler=0;
      tmp_string=""; tmp="";
      while (tk.hasMoreTokens()) {

      tmp_string=tk.nextToken();
      if (tk_zaehler>=8) {
      if (!tmp_string.equalsIgnoreCase(".") | !tmp_string.equalsIgnoreCase("..")) {
      tmp+=tmp_string+" ";
      }
      }
      tk_zaehler++;
      }
      if (tmp_string.length()>2) {
      System.out.println(tmp+ " | "+ tmp.substring(0,tmp.indexOf(".mp3")));
      }
      }

      // Ein Verzeichnis hoch
      //client.cdUp();

      // Datei umbenennen
      // 1. Argument: String quelle
      // 2. Argument: String ziel
      //client.rename("index.htm", "index.html");

      // Datei von FTP-Server downloaden
      // 1. Argument: String file
      // Rückgabe: TelnetInputStream
      URL url;
      InputStream in=null;
      OutputStream out=null;
      String destFile = "c:\\"+tmp.trim();

      /* Algoritmus zum Ersetzen des Leerzeichens mit
      * dem Zeichen " %20 "
      */
      String t=""; tmp=tmp.trim();
      for (int s=0; s<tmp.length(); s++){
      if (tmp.substring(s,s+1).equals(" ")) {
      t+="%20";
      }
      else {
      t+=tmp.substring(s,s+1);
      }
      }
      tmp=t;
      /* Ende
      */

      /* Version 1
      */
      url = new URL(protocol+"://"+domain+"/"+ftp_dir+"/"+t);
      in = url.openStream();

      out = new FileOutputStream(destFile);

      int len;
      byte[] b = new byte[128];

      while ((len = in.read(b)) != -1) out.write(b, 0, len);
      System.out.println("gut!");
      out.close();
      in.close();
      /* Ende Version 1
      */



      }
      catch (Exception e) {
      System.out.println("Fehler! "+e.getMessage());
      }
      }
      /**
      * @param args the command line arguments
      */
      public static void main(String[] args) throws Exception {
      new ftp();
      }

      }
      </i>
      <br>

      Hachel ;

      Comment


      • #4
        Hallo Hachel,

        meine Frage zielte eigentlich mehr auf die Klasse FtpClient ab. Diese ist nicht im Standard-JDK enthalten, durch das Posten deiner kompletten Klasse geht hervor, dass es sich um den FtpClient aus Sun's sun.net.ftp-Package handeln muss. Es hätte ja auch irgendeine andere Implementierung sein können.

        Leider habe ich jetzt trotz der Information auch keinen Schimmer was die Exception auslösen könnte. Ich habe allerdings auch noch keine eigenen Versuche gemacht. Ich müsste zuerst mal das ftp-Package holen und installieren. Bist du eventuell inzwischen selber drauf gekommen?

        Gruß

        Wolfgan

        Comment


        • #5
          Nein, leider noch nicht.... Das Paket ist aber Satndardmäßig im SDK enthalten. Habe mir nicht extra das Paket herunter laden müssen...

          Sobald ich das Problem gelöst habe, werde ich es hier posten...

          Danke aber trotzdem!

          Hache

          Comment


          • #6
            So, ich habe jetzt zum zweitenmal die kompilierten Klassen gelöscht... beim dritten mal kompilieren funzt es nun endlich!

            Danke für eure Hilfen!

            mfg Hache

            Comment

            Working...
            X