2011-10-28 32 views
7

Gần đây tôi đã cập nhật SDK Android trên máy Jenkins thành rev15 từ rev13 và phải làm lại một số công cụ xây dựng tùy chỉnh của chúng tôi theo số build.xml để phù hợp với các thay đổi được thực hiện trong rev14. Tôi làm việc này trên máy trạm của tôi, và kiểm tra nó trong mong đợi tất cả mọi thứ để được đào. Thay vào đó, việc xây dựng không thành công với các lỗi sau:Làm thế nào để sửa lỗi ZipException này trong khi biên soạn một dự án Android trên Jenkins?

-obfuscate: 

-dex: 
     [dex] Converting compiled files and external libraries into /export/home/hudson/jobs/path/to/the/file/classes.dex... 
     [dx] 
     [dx] UNEXPECTED TOP-LEVEL EXCEPTION: 
     [dx] java.util.zip.ZipException: error in opening zip file 
     [dx]  at java.util.zip.ZipFile.open(Native Method)  
     [dx]  at java.util.zip.ZipFile.<init>(ZipFile.java:127) 
     [dx]  at java.util.zip.ZipFile.<init>(ZipFile.java:143) 
     [dx]  at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:206) 
     [dx]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) 
     [dx]  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) 
     [dx]  at com.android.dx.command.dexer.Main.processOne(Main.java:418) 
     [dx]  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329) 
     [dx]  at com.android.dx.command.dexer.Main.run(Main.java:206) 
     [dx]  at com.android.dx.command.dexer.Main.main(Main.java:174) 
     [dx]  at com.android.dx.command.Main.main(Main.java:95) 
     [dx] 1 error; aborting 

BUILD FAILED 
/opt/android-sdk-linux/tools/ant/build.xml:729: The following error occurred while executing this line: 
/opt/android-sdk-linux/tools/ant/build.xml:731: The following error occurred while executing this line: 
/opt/android-sdk-linux/tools/ant/build.xml:743: The following error occurred while executing this line: 
/opt/android-sdk-linux/tools/ant/build.xml:249: null returned: 1 

tôi có thể xây dựng thành công dự án bằng cách chạy ant như là người dùng Jenkins trực tiếp trong thư mục workspace Jenkins với SDK Android cùng, Ant, và JDK rằng Jenkins đang sử dụng . Tôi thậm chí cắt và dán dòng thực hiện ra khỏi nhật ký Jenkins để đảm bảo rằng tất cả các nút bấm và công tắc đều được đặt giống nhau. Vì vậy, nó là một cái gì đó về cách Jenkins đang chạy xây dựng đó là vấn đề.

Tôi đã Jenkins kết xuất môi trường dưới dạng bước "thực thi trình bao" của bản dựng và tôi thấy rằng biến số LD_LIBRARY_PATH được đặt.

LD_LIBRARY_PATH=/u0/jdk1.6.0_29/jre/lib/i386/server:/u0/jdk1.6.0_29/jre/lib/i386:/u0/jdk1.6.0_29/jre/../lib/i386 

Tôi đặt giá trị này trong thiết bị đầu cuối của mình trong khi chạy xây dựng từ trình bao và không thành công giống như khi Jenkins chạy mọi thứ. Ah-ha!

Vấn đề là tôi không thể tìm ra cách giữ biến số LD_LIBRARY_PATH khỏi bị đặt hoặc chỉ vào thứ gì đó không gây ra sự cố này. Nó không được thiết lập trong môi trường của người dùng Jenkins, và tôi không thể tìm thấy bất cứ thứ gì có thể là một tham chiếu đến nó trong cấu hình Jenkins. Giá trị mà nó đặt đã thay đổi khi tôi cài đặt một JDK cập nhật và cập nhật giá trị JAVA trong /etc/defaults/jenkins vì vậy nó liên quan rõ ràng, nhưng không may, hành vi không cải thiện bất kỳ.

Tôi hết ý tưởng. Bất kỳ giúp đỡ?

Trả lời

1

Vấn đề hóa ra là do một số cấu hình chicanery tham gia vào việc sử dụng tính năng xây dựng ma trận Jenkins (một tính năng rất đẹp) nhân viên không đặt tập tin classes.jar của mình hy vọng sẽ tìm thấy nó, gây ra lỗi được báo cáo. Đó là cơ bản là một "tập tin không tìm thấy" mà không nói như vậy. Chúng tôi vẫn không chắc chắn những gì (nếu có?) Các LD_LIBRARY_PATH đã phải làm gì với nó.

Đồng nghiệp của tôi đã tinh chỉnh tệp build.xml cho dự án chính và thư viện để đồng ý hơn về nơi tệp đầu ra sẽ kết thúc và bây giờ mọi thứ hoạt động trở lại.

0

Tôi đã gặp vấn đề tương tự. Tôi đã xây dựng trên Jenkins và jar đã được sao chép vào libs không chính xác.

Tôi đang sử dụng Plugin tạo tác sao chép của Jenkins để lấy một lọ thư viện chung và sao chép nó vào thư mục libs /. Tôi đã nhận được lỗi khi tôi không sử dụng tùy chọn "Flatten Directories". Khi tôi vừa mới có cái bình trong thư mục libs, mọi thứ đã trở lại bình thường.

Hy vọng điều này sẽ giúp người khác đau đầu!

+0

Dường như nó có liên quan đến các tệp jar bị thất lạc. – Argyle

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