2010-01-19 26 views
116

cố gắng chạy chương trình này. Tôi nghĩ rằng để thiết lập tất cả các công cụ dịch vụ web tôi cần phải chạy apt. (Mặc dù sử dụng javac tôi gặp vấn đề tương tự). Tôi nghĩ rằng những gì tôi nhận được là biên dịch lỗi. (Hiển thị ở dưới cùng).Bao gồm các lọ trong classpath trên dòng lệnh (javac hoặc apt)

Tôi nghĩ rằng những gì tôi cần làm là bao gồm jar này trong đường dẫn lớp học của tôi: jsr181-api.jar (source). Có một cách tạm thời đơn giản để làm điều này (trên solaris)? Tôi không muốn thêm nó vào tập tin bash_rc của tôi (nó ở đó mãi mãi). Tôi cũng biết rằng có một số cách để làm điều đó bằng cách sử dụng một tập tin văn bản biểu hiện nhưng điều đó có vẻ phức tạp vì vậy tôi đã không nhìn vào nó được nêu ra. Tôi có thể chỉ cần làm một cái gì đó như:

javac HelloImp <listOfJars> 

hoặc

ant HelloImp <listOfJars> 

Code:

package server; 

import javax.jws.WebService; 

@WebService 
public class HelloImpl { 

    /** 
    * @param name 
    * @return Say hello to the person. 
    */ 
    public String sayHello(String name) { 
    return "Hello, " + name + "!"; 
    } 
} 

Biên dịch lỗi:

HelloImpl.java:3: package javax.jws does not exist 
import javax.jws.WebService; 
       ^
HelloImpl.java:5: cannot find symbol 
symbol: class WebService 
@WebService 
^ 
2 errors 

Cập nhật: Mát mẻ được gói lên nhưng nó vẫn không hoạt động. Tôi đã tạo ra một new question để giữ cho mọi thứ tốt đẹp và tổ chức:

Trả lời

132

Hãy thử như sau:

java -cp jar1:jar2:jar3:dir1:. HelloWorld 

Các classpath mặc định (trừ khi có một biến môi trường CLASSPATH) là thư mục hiện tại vì vậy nếu bạn định nghĩa lại nó, làm cho chắc chắn rằng bạn đang thêm thư mục hiện tại (.) vào đường dẫn lớp như tôi đã làm.

+0

https://github.com/SpotterRF/json-examples/tree/master/java/jackson có một ví dụ điển hình trong Makefile – CoolAJ86

+0

@ CoolAJ86 Các liên kết dường như đã đi chết –

+1

Cập nhật: https://github.com/coolaj86/json-examples/tree/master/java/jackson – CoolAJ86

9

Sử dụng công tắc -cp hoặc -classpath.

$ java -help 
Usage: java [-options] class [args...] 
      (to execute a class) 
    or java [-options] -jar jarfile [args...] 
      (to execute a jar file) 

where options include: 
... 
    -cp <class search path of directories and zip/jar files> 
    -classpath <class search path of directories and zip/jar files> 
        A ; separated list of directories, JAR archives, 
        and ZIP archives to search for class files. 

(Lưu ý rằng các dấu phân cách sử dụng để mục riêng biệt trên classpath khác nhau giữa hệ điều hành, trên máy tính Windows của tôi nó là ;, trong * nix nó thường là :.)

3

Sử dụng:

apt HelloImpl.java -classpath /sac/tools/thirdparty/jaxws-ri/jaxws-ri-2.1.4/lib/jsr181-api.jar:. 

công trình nhưng nó mang lại cho tôi một lỗi khác, xem new question

28

Trong cửa sổ:

java -cp C:/.../jardir1/*;C:/.../jardir2/* class_with_main_method 

chắc chắn rằng các lớp học với các chức năng chính là một trong các lọ bao gồm

1

javac HelloWorld.java -classpath ./javax.jar, giả sử javax nằm trong thư mục hiện hành, và biên dịch mục tiêu là "HelloWorld.java", và bạn có thể biên dịch mà không có một phương pháp chính

0

Lưu ý cho người dùng Windows, các lọ nên được tách ra bởi ; và không :.

ví dụ: javac -cp external_libs\lib1.jar;other\lib2.jar;

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