2011-02-23 30 views
14

Tôi thấy cùng một vấn đề ở nhiều vị trí khác nhau và thậm chí sau một phần tốt của googling, tôi không thể giải quyết nó . Những gì tôi đang cố gắng để làm gì (bức tranh lớn hơn) là phải đi qua The java web services tutorial, mà dường như tại các điểm đồng bộ,không thể tìm thấy lớp taskdef com.sun.tools.ws.ant.WsImport Sau "Hướng dẫn dịch vụ web java"

Đặc biệt here, khi tôi cố gắng biên soạn, tôi nhận được thông báo sau:

C: \ javaeetutorial5 \ ví dụ \ jaxws \ chung \ targets.xml: 26: taskdef lớp com.sun.tools.ws.ant.WsImport không thể tìm thấy

tôi đã thử nhiều cách kết hợp khác nhau của cách đặt lọ hoặc thay đổi các biến môi trường, nhưng không có kết quả. Bất kỳ câu chuyện thành công nào?

Thông điệp build lỗi đầy đủ như sau:

BUILD FAILED

C: \ javaeetutorial5 \ ví dụ \ jaxws \ helloservice \ build.xml: 4: Đã xảy ra lỗi sau trong khi thực hiện dòng này :

C: \ javaeetutorial5 \ examples \ jaxws \ common \ targets.xml: 26: taskdef Lớp học cần thiết bởi lớp com.sun.tools.ws.ant.WsImport không thể tìm thấy: org/apache/tools/ant/DynamicConfigurator

sử dụng classloader AntClassLoader [C: \ Program Files (x86) \ Java \ jdk1.6.0_23 \ lib \ tools.jar]

Tổng thời gian: 0 giây

Và tương ứng taskdef:

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"> 
    <classpath refid="jaxws.classpath"/> 
</taskdef> 

Cũng là một peek vào thư mục chứng thực:

C:\javaeetutorial5\kschneid>cd %JAVA_HOME% 

C:\Program Files (x86)\Java\jdk1.6.0_23>dir lib\endorsed 
Volume in drive C is OSDisk 
Volume Serial Number is AAAA-BBBB 

Directory of C:\Program Files (x86)\Java\jdk1.6.0_23\lib\endorsed 

25/02/2011 09:34 <DIR>   . 
25/02/2011 09:34 <DIR>   .. 
25/02/2011 09:34   105,134 jaxb-api.jar 
25/02/2011 09:33   54,476 jaxws-api.jar 
       2 File(s)  159,610 bytes 
       2 Dir(s) 110,907,056,128 bytes free 

C:\Program Files (x86)\Java\jdk1.6.0_23> 
+0

'' của bạn trông như thế nào? Bao gồm đường dẫn lớp bạn đang sử dụng. – kschneid

+0

@kschneid. Tôi xin lỗi vì không bao gồm tất cả các chi tiết. Vì nhiều người bắt đầu với hướng dẫn này, tôi nghĩ chúng ta sẽ gặp những trở ngại tương tự. Đang cập nhật –

+0

... và cách thức 'jaxws.classpath' được xác định? – kschneid

Trả lời

0

Tôi tìm thấy một câu trả lời không thỏa mãn tôi chút nào: Netbeans đã được cài đặt để chăm sóc mọi thứ cùng nhau. Tuy nhiên dòng lệnh không hoạt động (vì vậy điều đó có nghĩa là nó được ngăn cách với môi trường tốt). Tôi có thể theo dõi hướng dẫn, nhưng tôi vẫn tin rằng mọi thứ nên được thực hiện từ dòng lệnh (có quá nhiều Unix trong chế độ ăn uống của tôi không?)

+0

tôi nghĩ rằng tôi đang có cùng một kinh nghiệm. tôi đã hy vọng chỉ sử dụng ant build.xml được tạo bởi netbeans để tạo các ws của tôi phụ thuộc vào các ws khác. nhưng tôi đang gặp vấn đề này bên dưới. rất thích nghe nếu bạn giải quyết được tình huống của mình. – simgineer

+0

Thật không may tôi đã phải từ bỏ dự án (giáo dục), đây là lý do tôi đã không chọn câu trả lời cho đến bây giờ. Những gì tôi đã có ra khỏi nó là tài liệu trên trang web của Sun là lỗi thời. Tại một số tình huống tiêu thụ mà tôi gặp phải sau này, tôi tình cờ sử dụng các giao diện RESTful, vì vậy tôi không có nhu cầu phải sống trong các dịch vụ web. Sẽ cập nhật khi có gì đó thay đổi ... –

3

Tôi hoàn toàn hỗ trợ phát triển không IDE, đặc biệt là khi cố gắng tìm hiểu điều gì đó;). Hãy thử bắt đầu với xây dựng tập tin đơn giản này (sử dụng vị trí thực tế của JAX-WS RI của bạn cài đặt):

<project name="jaxws-tutorial" default="wsimport"> 

    <property name="jaxws.home" location="D:/jaxws-ri-2_2_1"/> 

    <path id="wsimport.classpath"> 
     <fileset dir="${jaxws.home}/lib" includes="jaxws-tools.jar"/> 
    </path> 

    <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpathref="wsimport.classpath"/> 

    <target name="wsimport"> 
     <wsimport> 
      <arg value="-version"/> 
     </wsimport> 
    </target> 

</project> 

Nếu bạn chỉ cần chạy ant, bạn sẽ thấy một số kết quả như sau:

wsimport: 
[wsimport] Consider using <depends>/<produces> so that wsimport won't do unnecessary compilation 
[wsimport] JAX-WS RI 2.2.1-b01- 

Vì có vẻ như bạn đang sử dụng Java 6, hãy chú ý đến "Running on JDK6".

+0

Tôi cảm thấy tôi thân thiết, nhưng chưa có (thêm vị trí xác nhận trong cơ thể câu hỏi ở trên), tôi có kết quả sau: XÂY DỰNG c: \ javaeetutorial5 \ kschneid \ build.xml: 9: taskdef Một lớp cần thiết bởi lớp com.sun.tools.ws.ant.WsImport không thể tìm thấy: org/apache/tools/ant/DynamicConfigurator sử dụng trình nạp lớp AntClassLoader [C: \ Sun \ jaxws-ri \ lib \ jaxws-tools.jar; C: \ Sun \ jaxws-ri \ lib \ jaxws-rt.jar; C: \ Sun \ jaxws-ri \ lib \ jaxws-api.jar; C: \ Sun \ jaxws- ri \ lib \ jsr181-api.jar; C: \ Sun \ jaxws-ri \ lib \ jsr250-api.jar; C: \ Sun \ jaxws-ri \ lib \ saaj-api.jar; ...] Tổng thời gian: 0 giây –

11

Vâng, rõ ràng là một liên kết đến một trang web với các solution đến vấn đề này là không thể chấp nhận, vì vậy tôi sẽ dán câu trả lời ở đây:

<property name="BUILD_LIBS" location="C:/Projects/Build/Libs/" /> 

<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"> 
    <classpath> 
     <pathelement location="${BUILD_LIBS}/jaxws-ri/lib/jaxws-tools.jar"/> 
    </classpath> 
</taskdef> 

Vấn đề là do sự liên quan jaxws jar không được trong đường dẫn lớp nhìn thấy nút pathelement ở trên. Thêm jar vào classpath sẽ giải quyết vấn đề.

+13

vì liên kết giải pháp bây giờ là một kết thúc chết, thật tốt khi bạn đặt mã ở đây! –

8

Nhiệm vụ kiến ​​<wsimport> không được bao gồm trong JDK, mặc dù có một wsimport.exe thực hiện chính xác như nhau.

Nếu bạn thực sự muốn tác vụ kiến, bạn có thể tải xuống jaxws-ri và sử dụng các bình 23 (!) Trong thư mục lib.

Hoặc bạn có thể sử dụng workaround này bằng cách gọi wsimport.exe:

<target name="generate-client" > 
    <exec executable="${java.home}/../bin/wsimport"> 
     <arg line="-keep -d build/classes -p ebay.apis -s src -wsdllocation http://localhost:7070/Ebay?wsdl eBaySvc.wsdl"/> 
    </exec> 
</target> 
4

Bạn có thể khắc phục vấn đề trong Netbeans xy như sau:

  1. Đến Tools-> Options-> Java-> Ant.
  2. Bấm vào "Add JAR/ZIP ..." bên dưới phần Classpath
  3. Navigate to "C: \ Program Files \ NetBeans x.y \ Doanh nghiệp \ modules \ ext \ metro \"
  4. Chọn tất cả các file.
  5. Nhấp vào OK và thử nhập/tạo lại.

nơi x.y = 7.1, 7.2, 8.0 vv

+0

Hiện tại không có tài nguyên để kiểm tra, ai đó có thể gặp vấn đề tương tự thử và thông báo? –

+0

Bạn không có tài nguyên để kiểm tra xem cái gì? –

+0

Tôi không có thời gian để kiểm tra xem giải pháp của bạn có đúng không (tải xuống netbeans cài đặt và thực hiện theo các bước). Nếu ai đó có thể xác nhận nó, tôi có thể chọn câu trả lời đúng :-) –

2

này đã làm việc cho tôi:

Tôi tải về thư viện JAVA-WS từ official site tôi đặt nó trên thư mục ngoài lib. Thư mục này nằm trên cùng một mức build.xml. On build.xml tôi sao chép từ jaxws-build.xml nhiệm vụ Ant có tên là “wsimport-init” và tôi sửa đổi nó như trong chế độ sau:

... 
    <target name="wsimport-init" depends="init"> 
     <mkdir dir="${build.generated.sources.dir}/jax-ws"/> 
     <taskdef name="wsimport" classname="com.sun.tools.ws.Ant.WsImport"> 
      <classpath> 
       <fileset dir="./extra-lib"> 
        <include name="**/*.jar"/> 
       </fileset> 
      </classpath> 
     </taskdef> 
    </target> 
... 

tham khảo: http://www.staniscia.net/989-resolve-the-portable-problem-of-netbean-jax-ws-libraries-for-web-service-clients/

2

Tôi đã thay đổi classname="com.sun.tools.ws.ant.WsImport" thành classname="com.sun.tools.ws.WsImport", đã khắc phục vấn đề này cho tôi.

0

Để vượt qua lỗi này, chúng ta cần phải sử dụng Tools-> Options, bấm linh tinh, và trong việc sử dụng tab Ant Thêm Jar/bưu điện để xác định vị trí và thêm các thư viện webservices-tools.jarwebservices-rt.jar trong thư mục

0

Nếu bạn là bằng cách sử dụng Eclipse IDE và đối mặt với vấn đề này, đây là một cái gì đó đã làm việc cho tôi. Đi tới: Cửa sổ> Tùy chọn. Tìm tùy chọn Ant ở bên trái.

Mở rộng và bạn sẽ thấy ANT Runtime. Chọn tùy chọn đó và kiểm tra các lọ có trong tab Classpath.

Chọn tùy chọn Thêm bình bên ngoài. Bây giờ hãy vào thư mục ant home trong hệ thống của bạn. Vào thư mục lib và thêm tất cả các lọ/tập tin jar bị thiếu.

điều này sẽ giải quyết sự thiếu phụ thuộc để xây dựng kiến.

Hy vọng điều đó sẽ hữu ích!

Các vấn đề liên quan