2013-05-24 34 views
6

Ich habe einige Beispiel-Quellcode folgen, aber ich bekomme einen Fehler beim Ausführen der FTP-Task. Hier ist meine Datei build.xml:ant: FTP-Task fehlgeschlagen wegen NoClassDefFoundError

?xml version="1.0"?> 
<project name="HelloWorld" default="deploy"> 
    <target name="init"> 
    <mkdir dir="build/classes" /> 
    <mkdir dir="dist" /> 
    </target> 
    <target name="compile" depends="init"> 
    <javac includeantruntime="false" 
     srcdir="src" 
     destdir="build/classes"/> 
    </target> 
    <target name="doc" depends="init"> 
    <javadoc destdir="build/classes" 
     sourcepath="src" 
     packagenames="org.*" /> 
    </target> 
    <target name="package" depends="compile,doc"> 
    <jar destfile="dist/project.jar" 
     basedir="build/classes" /> 
    </target> 
    <taskdef name="ftp" classname="org.apache.tools.ant.taskdefs.optional.net.FTP"> 
    <classpath> 
     <pathelement location="/usr/local/ant/lib/ant-commons-net.jar"/> 
    </classpath> 
    </taskdef> 
    <target name="deploy" depends="package"> 
    <ftp classname="org.apache.tools.ant.taskdefs.optional.net.FTP" 
     server="${server.name}" 
     userid="${ftp.username}" 
     password="${ftp.password}"> 
     <fileset dir="dist" /> 
    </ftp> 
    </target> 
</project> 

Hier sind einige Einstellungen:

$ ant -version 
Apache Ant(TM) version 1.9.0 compiled on March 5 2013 
$ echo $ANT_HOME 
/usr/local/ant 
$ ls -l $ANT_HOME 
lrwxrwxrwx 1 root root 17 May 20 11:54 /usr/local/ant -> apache-ant-1.9.0/ 

Hier ist die Ausgabe mit dem Fehler, den ich immer bin. Ich dachte, Ameise Build-Dateien sollten tragbar sein. Was ist das Problem hier? Irgendwie sucht die "Ant" FTP-Aufgabe nach einem Klassennamen, der von einer Klasse stammt, die nicht mit ant verteilt wird. Ich habe versucht, die Aufgabe auf die Klasse mit Ameise verteilt, aber Ant scheint immer noch nicht die entsprechende Klasse zu der FTP-Aufgabe, die es sucht zu finden.

Buildfile: /home/johndoe/ex/build.xml 

init: 

compile: 

doc: 
    [javadoc] Generating Javadoc 
    [javadoc] Javadoc execution 
    [javadoc] Loading source files for package org.example.helloworld... 
    [javadoc] Constructing Javadoc information... 
    [javadoc] Standard Doclet version 1.7.0_21 
    [javadoc] Building tree for all the packages and classes... 
    [javadoc] Building index for all the packages and classes... 
    [javadoc] Building index for all classes... 

package: 
     [jar] Building jar: /home/johndoe/ex/dist/project.jar 

deploy: 

BUILD FAILED 
/home/johndoe/ex/build.xml:30: Could not create type ftp due to java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClientConfig 
    at org.apache.tools.ant.taskdefs.optional.net.FTP$LanguageCode.getValidLanguageCodes(FTP.java:2698) 
    at org.apache.tools.ant.taskdefs.optional.net.FTP$LanguageCode.<clinit>(FTP.java:2694) 
    at org.apache.tools.ant.taskdefs.optional.net.FTP.<init>(FTP.java:137) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at org.apache.tools.ant.AntTypeDefinition.innerCreateAndSet(AntTypeDefinition.java:328) 
    at org.apache.tools.ant.AntTypeDefinition.createAndSet(AntTypeDefinition.java:274) 
    at org.apache.tools.ant.AntTypeDefinition.icreate(AntTypeDefinition.java:219) 
    at org.apache.tools.ant.AntTypeDefinition.create(AntTypeDefinition.java:206) 
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:285) 
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:263) 
    at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:417) 
    at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:163) 
    at org.apache.tools.ant.Task.perform(Task.java:347) 
    at org.apache.tools.ant.Target.execute(Target.java:435) 
    at org.apache.tools.ant.Target.performTasks(Target.java:456) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1364) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1248) 
    at org.apache.tools.ant.Main.runBuild(Main.java:851) 
    at org.apache.tools.ant.Main.startAnt(Main.java:235) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.net.ftp.FTPClientConfig 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 26 more 

Total time: 2 seconds 

Idealerweise sollte ich keine anderen Klassen herunterladen müssen, um an die Arbeit zu kommen. Es sollte funktionieren out of the box, sonst ist es nicht so tragbar. Plus, wenn jemand mir helfen könnte, wo man die Klassen, die fehlen, es von große Hilfe herunterladen würde.

Danke.

Antwort

0

Wenn Sie eine Linux-Distribution Debian oder Raspbian auf einem Raspberry Pi verwenden, können Sie einfach dieses Problem lösen, indem Sie:

sudo apt-get install libcommons-net-java 
1

Nach https://ant.apache.org/manual/Tasks/ftp.html, müssen Sie Apache Commons Net und Jakarta Oro installieren.

Kopieren Sie diese Gläser in Ihr \ lib-Verzeichnis, wie Jason Posit sagte.

Wenn Sie Eclipse verwenden, müssen Sie möglicherweise den Ant-Buildpfad aktualisieren. Gehen Sie zu "Einstellungen"> "Ant"> "Runtime"> "Externe JARs hinzufügen", um diese Bibliotheken zu Ihrem Ant-Buildpfad hinzuzufügen.

+0

Dies funktionierte für mich, danke! – GreenhouseVeg

0

Hatte das gleiche Problem. Es ist mir passiert, als ich ant-1.9.1 anstelle von ant-1.8.2 benutzt habe.

Das Umschalten der Ant-Version hat es behoben.

0

Schritte, die für mich gearbeitet

Navigieren in den Ordner, wo Jenkins

installiert ist
jenkins>>tools>>hudson.tasks.Ant_AntInstallation>>(ANT VERSION Installed)>>lib 

Ort, um die unten Dateien & Neustart Jenkins

  1. commons-net-3.3.jar
  2. commons-net-3.4.jar
  3. jakarta-oro.jar