2009-02-11 35 views
32

Tôi muốn làm điều gì đó tương tự như jython -cp FOO:BAR:BAZ argle.py.

Nếu tôi thêm FOO, BARBAZ đến $CLASSPATH tác phẩm này. Tôi đã cố gắng để thêm chúng vào sys.path tại thời gian chạy, nhưng điều đó dường như không hoạt động đối với lọ. Nó hiện hoạt động nếu tôi thêm đường dẫn đến các bình mở rộng đến sys.path khi chạy. Có một cách thay thế đơn giản nào để giải mã các tệp jar? Augmenting $CLASSPATH cho mọi người dùng chạy tập lệnh này không phải là một giải pháp thay thế có thể chấp nhận được.

Cảm ơn.

+0

Tôi cũng muốn biết điều này! Tôi nhìn vào kịch bản khởi động jython, nhưng bash của tôi không đủ tốt để hiểu nó. –

Trả lời

44

Bạn có thể sử dụng tùy chọn để thiết lập -Dpython.path:

jython -Dpython.path=FOO:BAR:BAZ argyle.py 
+8

NB: trên Windows Thay dấu hai chấm ':' với dấu chấm phẩy ';' dấu phân cách. jython -Dpython.path = FOO; BAR; BAZ argyle.py – monojohnny

+1

trên Windows sử dụng dấu gạch chéo ngược kép \\ khi chỉ định đường dẫn và nếu tên đường dẫn chứa dấu cách bao quanh nó với dấu ngoặc kép. Không biết nếu dấu gạch chéo/là bắt buộc. Tôi nhận được những thứ làm việc mà không có nó. – Paolo

3

Bạn có thể tạo một JAR lớn chứa tất cả các lớp liên quan. Đoạn kiến ​​sau đây cho thấy ý tưởng:

<target name="jar"> 
    <mkdir dir="build/jar"/> 
    <unjar src="lib/jython.jar" dest="${classes.dir}" /> 
    <unjar src="lib/FOO.jar" dest="${classes.dir}" /> 
    <unjar src="lib/BAR.jar" dest="${classes.dir}" /> 
    <unjar src="lib/BAZ.jar" dest="${classes.dir}" /> 

    <jar destfile="build/jar/bigjython.jar" basedir="${classes.dir}"> 
     <manifest> 
      <attribute name="Main-Class" value="${main-class}"/> 
     </manifest> 
    </jar> 
</target> 
+0

Bây giờ làm cách nào để chạy tập lệnh của tôi bằng bigjython.jar? –

+0

Tệp bigjython.jar có nghĩa là bao gồm jython.jar gốc cùng với các lọ phụ của bạn. Vì vậy, ở cuối jar bigjython nên làm việc giống như jython.jar nhưng không cần tham số -cp. – axelclk

+1

Tôi không sử dụng jython.jar - Tôi đang sử dụng lệnh 'jython' từ trình bao để thực thi argle.py –

4

java -cp JAR1: JAR2: jython.jar org.python.util.jython pythonScript .py hoạt động ở đây, cả trên Linux và Macintosh. Trên Windows, hoán đổi dấu hai chấm trong đường dẫn lớp cho dấu chấm phẩy và bạn sẽ có màu vàng.

17

jython lệnh hỗ trợ qua các đối số thông qua các lệnh java ... Vì vậy:

jython -J-cp JAR1:JAR2 

Bạn có thể kiểm tra kết quả bằng cách thêm lệnh --print switch:

jython -J-cp JAR1:JAR2 --print 

trên sẽ in ra thực tế lệnh java thay vì thực hiện nó.

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