2014-11-13 3 views
1

Когда я пытаюсь построить текущий Android проект с Maven (МВН пакет), я получаю эту ошибку:Maven не удается построить проект Android (не используя Eclipse)

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project gs-maven-tabs: Compilation failure: Compilation failure: 
[ERROR] /home/kleber/workspace/basic_tab/src/main/java/org/hello/HelloActivity.java:[5,29] error: cannot find symbol 
[ERROR] symbol: class FragmentTabHost 
[ERROR] location: package android.support.v4.app 
[ERROR] /home/kleber/workspace/basic_tab/src/main/java/org/hello/HelloActivity.java:[9,12] error: cannot find symbol 
[ERROR] symbol: class FragmentTabHost 
[ERROR] location: class HelloActivity 
[ERROR] /home/kleber/workspace/basic_tab/src/main/java/org/hello/HelloActivity.java:[16,20] error: cannot find symbol 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

относится к этому классу:

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentTabHost; 

public class HelloActivity extends FragmentActivity { 
    // Fragment TabHost as mTabHost 
    private FragmentTabHost mTabHost; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.hello_layout); 

     mTabHost = (TabHost)findViewById(android.R.id.tabhost); 
     mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 

     mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"), Tab1Fragment.class, null); 
     mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Tab2"), Tab2Fragment.class, null); 
     mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab3"), Tab3Fragment.class, null); 
    } 
} 

эта ошибка происходит даже добавить это к моему pom.xml:

<dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>support-v4</artifactId> 
     <version>r6</version> 
    </dependency> 

Что я здесь отсутствует?

пс .: мой полный pom.xml это:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.hello</groupId> 
    <artifactId>gs-maven-tabs</artifactId> 
    <version>0.1.0</version> 
    <packaging>apk</packaging> 

    <properties> 
     <!-- use UTF-8 for everything --> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <android.sdk.path>/home/kleber/android-sdk-linux/</android.sdk.path> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>com.google.android</groupId> 
      <artifactId>android</artifactId> 
      <version>4.1.1.4</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.google.android</groupId> 
      <artifactId>support-v4</artifactId> 
      <version>r6</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
       <artifactId>android-maven-plugin</artifactId> 
       <version>3.9.0-rc.1</version> 
       <configuration> 
        <sdk> 
         <platform>19</platform> 
        </sdk> 
        <deleteConflictingFiles>true</deleteConflictingFiles> 
        <undeployBeforeDeploy>true</undeployBeforeDeploy> 
       </configuration> 
       <extensions>true</extensions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <showDeprecation>true</showDeprecation> 
        <showWarnings>true</showWarnings> 
        <executable>/home/kleber/jdk1.7.0_55/bin/javac</executable> 
        <fork>true</fork> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 
+0

возможным дублировать [Как создать проект Maven Android в eclipse] (http://stackoverflow.com/questions/26134761/how-to-build-a-maven-android-project-in-eclipse) – Gattsu

+0

Я не использую Eclipse для создания проекта (только редактор Atom и команды maven командной строки). –

+0

Я не уверен, как вы строите свой проект во время вашего кодирования, но кажется, что в библиотеке поддержки r6 нет попытки FragmentTabHost изменить ее на последнюю доступную lib. – TacB0sS

ответ

0

После quick check in the jar, FragmentTabHost класс не в этой библиотеке!

Это основная проблема при сохранении двух сборок, IDE и CLI, после нескольких обновлений большую часть времени они не совпадают.

Вы можете найти самые обновленные баночки в дополнительных приложениях sdk ... если они не загрузятся через диспетчер SDK.

${SDK_HOME}/extras/android/m2repository/com/android/support/support-v4/21.0.0/support-v4-21.0.0.aar 

Распакуйте его и возьмите classes.jar (или преобразовать его в apklib) от него и заменить его с r6 файл в хранилище, или установить его в качестве новой баночке:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=com.google.android \ 
-DartifactId=support-v4 -Dversion=21.0.0 -Dpackaging=jar 



<dependency> 
    <groupId>com.google.android</groupId> 
    <artifactId>support-v4</artifactId> 
    <version>21.0.0</version> 
</dependency> 
+0

У меня нет двух сборок (только один, построенный через CLI). Я создаю тестовый проект, используя eclipse/adt, чтобы проверить, доступен ли этот недостающий класс (ответ: да, они есть). –

+0

Как вы проверяете код во время кодирования? – TacB0sS

+0

также проверьте ссылку, которую я предоставил, это класс не в том банке, который является причиной его отказа – TacB0sS

Смежные вопросы