2015-08-14 34 views
10

Tôi đã tải một dự án thư viện Android bên thứ 3, dự án không chứa tập tin lớp java nhưng một jar tập tin dưới libs/ thư mục:Không thể tìm thấy những lớp từ jar thư viện của dự án khi maven xây dựng dự án của tôi

libs/ 
    - CustomService.jar 
res/ 
    -… 
pom.xml 

Dự án thư viện này có thể được xây dựng thành apklib lưu trữ. Tôi đã xây dựng nó & Tôi đã cài đặt lưu trữ này vào kho lưu trữ maven cục bộ của mình.

Sau đó, trong dự án Android của riêng tôi, tôi đã thêm sự phụ thuộc của dự án này apklib:

<dependency> 
    <groupId>com.custom.service</groupId> 
    <artifactId>custom-service</artifactId> 
    <type>apklib</type> 
    <version>1.0</version> 
</dependency> 

Trong mã Java của tôi, tôi đã sử dụng các lớp từ CustomService.jar, nhưng khi Tôi maven xây dựng dự án của tôi, tôi liên tục nhận được lỗi sau:

[ERROR] package com.custom.service.user does not exist 
[ERROR] location: class com.my.app.MyClass 
[ERROR] /Users/Johon/MyApp/src/main/java/com/my/app/MyClass.java:[34,17] cannot find symbol 
[ERROR] symbol: variable UserService 

Lỗi trên phàn nàn rằng nó không thể tìm thấy lớp học UserService từ thư viện lưu trữ pklib. Sau đó, tôi đã kiểm tra nội dung của các tập tin jar thư viện bằng lệnh:

jar tf CustomService.jar

Tôi thấy rằng lớp là trong CustomService.jar của dự án thư viện

com/custom/service/user/UserService.class 

Lớp này là trong các jar, Tại sao tôi nhận được lỗi sau đó ????

+2

Tôi nghi ngờ bất kỳ ai cũng có thể trả lời câu hỏi của bạn tại thời điểm này, vì hầu hết mọi người đều sử dụng gradle + .aar thay vì maven + .apklib ngay bây giờ. – Dmide

+1

apklib không được dùng nữa. Hãy thử tạo tệp aar thay vì http://simpligility.github.io/android-maven-plugin/aar.html và sau đó thêm phụ thuộc vào aar –

+0

Bạn có thể chia sẻ nhật ký Maven của mình về cài đặt Custom-service.jar để kho lưu trữ cục bộ của bạn? Dường như với tôi rằng các thuộc tính phụ thuộc có thể sai. – saver

Trả lời

0

Cố gắng thêm phạm vi:

<dependency> 
    <groupId>com.custom.service</groupId> 
    <artifactId>custom-service</artifactId> 
    <type>apklib</type> 
    <version>1.0</version> 
    <scope>compile</scope> 
</dependency> 
+0

Phạm vi biên dịch là mặc định trong Maven, vì vậy việc thêm nó sẽ không có hiệu lực. –

0

Hãy chắc chắn rằng dự án của bạn là loại apk hoặc bất kỳ loại khác tương thích với apklib thư viện. Mặc định jar loại sẽ bỏ quaapklib phụ thuộc.

<project> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <packaging>apk</packaging> 
... 
</project> 
Các vấn đề liên quan