2013-05-24 30 views
6

Tôi đã theo dõi một số mã nguồn ví dụ nhưng tôi gặp lỗi khi thực hiện tác vụ ftp. Dưới đây là file build.xml của tôi:kiến: tác vụ ftp không thành công do 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> 

Dưới đây là một số cài đặt:

$ 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/ 

Dưới đây là sản phẩm có lỗi Tôi nhận được. Tôi nghĩ rằng kiến ​​xây dựng các tập tin được coi là di động. Vấn đề ở đây là gì? Bằng cách nào đó tác vụ FTP "Ant" tìm kiếm tên lớp học đến từ một lớp không được phân phối với kiến. Tôi đã thử chỉ nhiệm vụ cho lớp được phân phối với kiến ​​nhưng kiến ​​ vẫn không có vẻ như tìm lớp tương ứng với tác vụ ftp mà nó đang tìm kiếm.

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 

Lý tưởng nhất tôi không nên tải xuống các lớp khác để kiến ​​thức hoạt động. Nó nên làm việc ra khỏi hộp, nếu không nó không phải là di động. Ngoài ra, nếu ai đó có thể giúp tôi tải xuống các lớp học bị thiếu, sẽ là trợ giúp tuyệt vời.

Cảm ơn.

Trả lời

0

Nếu bạn sử dụng một bản phân phối Debian Linux hoặc Raspbian trên Pi mâm xôi, bạn chỉ có thể giải quyết vấn đề này bằng cách chạy:

sudo apt-get install libcommons-net-java 
1

Theo https://ant.apache.org/manual/Tasks/ftp.html, bạn cần phải cài đặt Apache Commons Net và Jakarta Oro.

Sao chép các lọ này vào thư mục \ lib của bạn, như Jason Posit nói.

Nếu bạn đang sử dụng Eclipse, bạn có thể cần phải cập nhật đường dẫn xây dựng Ant. Đi tới "Tuỳ ​​chọn"> "Ant"> "Thời gian chạy"> "Thêm các JAR bên ngoài" để thêm các thư viện này vào đường dẫn Ant của bạn.

+0

Điều này làm việc cho tôi, cảm ơn! – GreenhouseVeg

0

Đã xảy ra sự cố tương tự. Nó xảy ra với tôi khi tôi sử dụng ant-1.9.1 thay vì ant-1.8.2.

Chuyển phiên bản kiến ​​đã sửa nó.

0

bước mà làm việc Đối với tôi

hướng đến thư mục nơi Jenkins được cài đặt

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

nơi đây tập tin & restart Jenkins

  1. commons-net-3.3.jar
  2. commons-net-3.4.jar
  3. jakarta-oro.jar
Các vấn đề liên quan