Tôi có 3 tệp jar và một tệp .java phụ thuộc vào các tệp jar này. Làm cách nào để biên dịch tệp .java với các tệp jar này bằng dấu nhắc lệnh?
java -cp ".;magic.jar" Foo
là ok java Foo -cp ".;magic.jar"
là không.
Tôi có 3 tệp jar và một tệp .java phụ thuộc vào các tệp jar này. Làm cách nào để biên dịch tệp .java với các tệp jar này bằng dấu nhắc lệnh?
java -cp ".;magic.jar" Foo
là ok java Foo -cp ".;magic.jar"
là không.
Câu trả lời:
Bạn có thể đưa các tệp jar của mình vào lệnh "javac" bằng cách sử dụng tùy chọn "-cp".
javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java
Thay vì "-cp", bạn cũng có thể sử dụng "-classpath"
javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java
Bạn có thể bao gồm các lọ mỗi khi bạn biên dịch bằng cách đặt biến môi trường "CLASSPATH" một cách chính xác. Biến môi trường sẽ lưu trữ đường dẫn nơi các lọ và lớp cần được sử dụng để biên dịch / thực thi bất kỳ tệp java nào. Bạn sẽ không phải bao gồm các lọ riêng lẻ mỗi khi bạn biên dịch tệp.
Các máy khác nhau có các phương pháp khác nhau để đặt classpath làm biến môi trường. Các lệnh cho Windows, Linux, v.v. khác nhau.
Bạn có thể tìm thêm chi tiết trong blog này .
http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.java
đã làm cho tôi. Tôi đã sử dụng mac. Tôi đọc ở đâu đó rằng ':' được sử dụng cho unix.
.:
làm gì? xin lỗi nếu nó là một câu hỏi ngớ ngẩn, nhưng nó không rõ ràng đối với tôi.
javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Vui lòng thử trên Linux
javac -cp jarfile source file
THÍ DỤ :-
javac -cp .:/jars/* com/template/*.java
.:/jars
thay thế bằng thư mục chứa các tệp JAR của tôi, tôi nhận được thông báo lỗi javac: invalid flag: /location/of/first/jar/file.jar
.
Cú pháp sẽ hoạt động trên lệnh dos windows:
javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java
Cố gắng thêm tất cả các tệp jar phụ thuộc vào đường dẫn lớp của bạn thông qua cài đặt biến môi trường hoặc sử dụng các bước dưới đây:
Đặt classpath cho các tệp jar phụ thuộc của bạn như hình dưới đây:
set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;
Bây giờ, bạn có thể biên dịch tệp java của mình. (chỉ huy:javac YourJavaFile.java
:)
Hy vọng điều này sẽ giải quyết vấn đề phụ thuộc của bạn.
Sau đây là các bước,
Sao chép tất cả các lọ và tệp .java của bạn trong cùng một thư mục (Sẽ dễ dàng đề cập đến tên tệp thay vì đề cập đến đường dẫn dài. Mặc dù bạn có thể giữ jar và .java trong các thư mục riêng biệt).
Để biên dịch,
javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
Để thực hiện,
java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>
Tôi hi vọng cái này giúp được!
Thao tác này sẽ tạo tệp .class:
javac -classpath "[jarname with specified path]" [java filename]
Điều này sẽ thực thi tệp lớp:
java -cp [jarname with specified path]: [java filename]
javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.java
và chạy ** java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java also i tried java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile
Bạn cần chỉ định các phụ thuộc trong thời gian biên dịch cũng như thời gian chạy
Để biên dịch, hãy sử dụng định dạng này
javac -cp "*.jar;classfile_path" filename.java
Thí dụ:
javac -cp "ojdbc6.jar;c:\programs" Main.java
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java
Nếu bạn đang sử dụng Ubuntu:
/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java
Đi đến vị trí thư mục (Ngoài cấu trúc gói)
/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample
Lưu ý: Vui lòng xem vị trí tệp và tên gói