2015-08-14 11 views
10

Ho scaricato un progetto libreria di Android 3a parte, il progetto non contiene file di classe Java, ma un file di jar sotto libs/ cartella:Impossibile trovare la classe dal vaso del progetto libreria quando Maven costruire il mio progetto

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

Questo progetto di libreria può essere progettato per l'archivio apklib. L'ho creato & Ho installato questo archivio nel mio repository locale..

Poi nel mio progetto Android, ho aggiunto la dipendenza di questo apklib progetto:

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

Nel mio codice Java, ho usato la classe dalla CustomService.jar, ma quando ho Maven costruire il mio progetto ho sempre ottenere il seguente errore:

[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'errore precedente si lamenta che non riesce a trovare la classe UserService dalla biblioteca un archivio pklib. Poi, ho controllato il contenuto del file jar libreria comando:

jar tf CustomService.jar

vedo che la classe è in CustomService.jar del progetto di libreria

com/custom/service/user/UserService.class 

Questa classe è in il barattolo, perché ottengo l'errore allora ????

+2

Dubito che qualcuno possa rispondere alla tua domanda a questo punto, perché quasi tutti usano gradle + .aar invece di maven + .apklib ora. – Dmide

+1

apklib è obsoleto. Prova a generare il file aar invece http://simpligility.github.io/android-maven-plugin/aar.html e quindi aggiungi la dipendenza a aar –

+0

Potresti condividere i tuoi log di Maven sull'installazione di Custom-service.jar a il tuo repository locale? Mi sembra che le proprietà di dipendenza possano essere sbagliate. – saver

risposta

0

tenta di aggiungere portata:

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

L'ambito di compilazione è predefinito in Maven, quindi l'aggiunta non avrà alcun effetto. –

0

Assicurarsi che il progetto è di tipo apk o di qualsiasi altro tipo compatibili conapklib librerie. L'impostazione predefinita jar tipo ignorerà le dipendenzeapklib.

<project> 

    <modelVersion>4.0.0</modelVersion> 

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