2015-08-14 3 views
10

Я скачал третий партийный проект библиотеки Android, проект не содержит файл класса Java, но в банки файла под libs/ папку:Не удается найти класс из кувшина проекта библиотеки, когда Maven построить свой проект

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

Этот проект библиотеки может быть построен на основе apklib. Я построил его & Я установил этот архив в свой локальный репозиторий maven.

Тогда в моем собственном проекте Android, я добавил зависимость этого apklib проекта:

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

В моей Java коде, я использовал класс от CustomService.jar, но когда Я Maven построить мой проект, я постоянно получаю следующее сообщение об ошибке:

[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 

выше ошибка жалуется, что не может найти UserService класс из библиотеки а архив pklib. Затем я проверил содержимое файла библиотеки банку по команде:

jar tf CustomService.jar

Я вижу, что класс находится в CustomService.jar проекта библиотеки

com/custom/service/user/UserService.class 

Этот класс находится в jar, Почему я получаю ошибку тогда ????

+2

Я сомневаюсь, что каждый может ответить на ваш вопрос на этом этапе, потому что почти все используют gradle + .aar вместо maven + .apklib сейчас. – Dmide

+1

apklib устарел. Попробуйте создать файл aar вместо http://simpligility.github.io/android-maven-plugin/aar.html , а затем добавить зависимость от aar –

+0

Не могли бы вы поделиться своими журналами Maven об установке Custom-service.jar в ваш местный репозиторий? Мне кажется, что свойства зависимостей могут быть неправильными. – saver

ответ

0

Попробуйте добавить объем:

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

Область компиляции по умолчанию в Maven, поэтому добавление ее не будет иметь эффекта. –

0

Убедитесь, что ваш проект типа apk или любого другого типа совместимого с apklib библиотеками. По умолчанию jar тип будет игнорироватьapklib зависимости.

<project> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <packaging>apk</packaging> 
... 
</project>