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.
Dies funktionierte für mich, danke! – GreenhouseVeg