2013-05-18 8 views
5

Myślę, że jest jakiś problem z IntelliJ, gdy generuje plik R.java, co prowadzi do problemu w AndroidAnnotations, ponieważ nie może rozwiązać identyfikatora zasobu układ.Proces przetwarzania AndroidAnnotations kończy się niepowodzeniem w IntelliJ, ponieważ R.java nie jest generowany

Oto moja działalność:

package com.airlocksoftware.canvastest; 

import android.app.Activity; 
import android.os.Bundle; 
import com.googlecode.androidannotations.annotations.EActivity; 

@EActivity(R.layout.main) 
public class MyActivity extends Activity { 
    /** 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 
} 

Co dziwne jest to, że nawet jeśli I ustosunkowania się adnotację, i zrobić setContentView(R.layout.main), to działa dobrze choć R.java nie jest importowana.

Nawiasem mówiąc, układ to po prostu prosty "Hello World". Nic dziwnego się tam dzieje.

Bez względu na to, co robię, nie mogę uzyskać funkcji AndroidAnnotations do wygenerowania CanvasActivity_.java. Moje pom.xml wygląda następująco:

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.airlocksoftware.canvastest</groupId> 
    <artifactId>CanvasTest</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <android.version>4.2.2_r2</android.version> 
     <android.platform>17</android.platform> 
     <androidannotations.version>2.7.1</androidannotations.version> 
     <java.version>1.6</java.version> 
    </properties> 

    <repositories> 
     <repository> 
      <id>local-repo</id> 
      <url>file:///${env.HOME}/.m2/repository</url> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>android</groupId> 
      <artifactId>android</artifactId> 
      <version>${android.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.googlecode.androidannotations</groupId> 
      <artifactId>androidannotations</artifactId> 
      <version>${androidannotations.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.googlecode.androidannotations</groupId> 
      <artifactId>androidannotations-api</artifactId> 
      <version>${androidannotations.version}</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <configuration> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
       <artifactId>android-maven-plugin</artifactId> 
       <version>3.4.0</version> 
       <configuration> 
        <sdk> 
         <platform>${android.platform}</platform> 
        </sdk> 
        <undeployBeforeDeploy>true</undeployBeforeDeploy> 
       </configuration> 
       <extensions>true</extensions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Adnotacja przetwarzanie set up like shown in this screenshot.

annotation processing

Zasadniczo konfiguracja ścieżka procesor aby wskazywały pliki jar w moim lokalnym repo maven, jak described here.

Źródła projektów zostały skonfigurowane: like shown in this screenshot.

project sources

Bez względu na to, jak wykonuję/przebudowuję projekt, nic nie pojawia się w gen/aa (i dlatego nie mogę odwoływać się do CanvasActivity_.java) Uruchomiłem instalację mvn clean z katalogu głównego projektu, który kończy się niepowodzeniem z tym plikiem stacktrace .

INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 4.363s 
[INFO] Finished at: Sat May 18 15:53:06 MDT 2013 
[INFO] Final Memory: 11M/81M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project CanvasProto: Compilation failure: Compilation failure: 
[ERROR] /Users/matthewbbishop/Clients/proto/CanvasProto/src/main/java/com/airlocksoftware/CanvasProto/CanvasActivity.java:[6,38] cannot find symbol 
[ERROR] symbol : class R 
[ERROR] location: package com.airlocksoftware.CanvasProto 
[ERROR] /Users/matthewbbishop/Clients//proto/CanvasProto/src/main/java/com/airlocksoftware/CanvasProto/CanvasActivity.java:[11,12] package R does not exist 
[ERROR] /Users/matthewbbishop/Clients/proto/CanvasProto/src/main/java/com/airlocksoftware/CanvasProto/CanvasActivity.java:[14,15] package R does not exist 
[ERROR] error: Unexpected error. Please report an issue on AndroidAnnotations, with the following content: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
[ERROR] at com.googlecode.androidannotations.helper.AnnotationHelper.extractAnnotationParameter(AnnotationHelper.java:293) 
[ERROR] at com.googlecode.androidannotations.helper.AnnotationHelper.extractAnnotationResIdValueParameter(AnnotationHelper.java:269) 
[ERROR] at com.googlecode.androidannotations.helper.IdValidatorHelper.resIdsExist(IdValidatorHelper.java:45) 
[ERROR] at com.googlecode.androidannotations.validation.EActivityValidator.validate(EActivityValidator.java:55) 
[ERROR] at com.googlecode.androidannotations.validation.ModelValidator.validate(ModelValidator.java:56) 
[ERROR] at com.googlecode.androidannotations.AndroidAnnotationProcessor.validateAnnotations(AndroidAnnotationProcessor.java:414) 
[ERROR] at com.googlecode.androidannotations.AndroidAnnotationProcessor.processThrowing(AndroidAnnotationProcessor.java:364) 
[ERROR] at com.googlecode.androidannotations.AndroidAnnotationProcessor.process(AndroidAnnotationProcessor.java:341) 
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:627) 
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:556) 
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:701) 
[ERROR] at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:987) 
[ERROR] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727) 
[ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:353) 
[ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:279) 
[ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:270) 
[ERROR] at com.sun.tools.javac.Main.compile(Main.java:87) 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597) 
[ERROR] at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess0(JavacCompiler.java:551) 
[ERROR] at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:526) 
[ERROR] at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:167) 
[ERROR] at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:678) 
[ERROR] at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128) 
[ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) 
[ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
[ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
[ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
[ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
[ERROR] Caused by: java.lang.reflect.InvocationTargetException 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597) 
[ERROR] at com.googlecode.androidannotations.helper.AnnotationHelper.extractAnnotationParameter(AnnotationHelper.java:287) 
[ERROR] ... 46 more 
[ERROR] Caused by: java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed data found for annotation element public abstract int com.googlecode.androidannotations.annotations.EActivity.value() (Found data of type int) 
[ERROR] at com.sun.tools.javac.model.AnnotationProxyMaker$ValueVisitor$1.generateException(AnnotationProxyMaker.java:243) 
[ERROR] at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:56) 
[ERROR] at $Proxy16.value(Unknown Source) 
[ERROR] ... 51 more 

Szczerze jestem ze stratą teraz. Jeśli ktoś ma pomysł, co robić, byłoby to niesamowite. Dzięki!

EDYCJA: oto stub R.java generowany przez IntelliJ.

/*___Generated_by_IDEA___*/ 

package com.airlocksoftware.canvastest; 

/* This stub is for using by IDE only. It is NOT the R class actually packed into APK */ 
public final class R { 
} 

Odpowiedz

1

Jego ponieważ pom.xml brakuje następujące:

<packaging>apk</packaging> 

bez tego pliku R.java nie zostanie wygenerowany.

Dodaj go do góry pom.xml następująco:

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.airlocksoftware.canvastest</groupId> 
    <artifactId>CanvasTest</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <packaging>apk</packaging> 

    /* ... */ 
    /* rest are fine */ 
    /* ... */ 
+0

Ok, niesamowite. Teraz buduje poprawnie z linii poleceń z mavenem. Ale IntelliJ nadal nie obsługuje przetwarzania adnotacji, więc generowane pliki nigdy nie trafiają do gen/aa, jak powinny. Jakieś pomysły? – liftdeadtrees

+0

Hi @liftdeadtrees, yeah Kompilator IDE IDIJJ jest w trakcie przetwarzania, a miałem z nim tak dużo problemów, że poprawnie wykrywa adnotacje. Przez większość czasu musiałem edytować "Procesory adnotacji", jak to zostało określone na zrzucie ekranu, i musiałem podać * pełną ścieżkę * do JARów, a nie względne ścieżki. Spróbuj również sprawdzić "Zdobądź procesory z projektu classpath", aby sprawdzić, czy to działa ... – Subhas

+0

Nie wiem nawet, czy to właśnie masz na myśli, ale zmieniłem ścieżkę do słoików z ~/.m2/rest/of/ścieżkę do /Users/matthewbbishop/.m2/rest/of/path i teraz z jakiegoś niezmiernie dziwnego powodu działa. Jestem bardzo wdzięczny za twoją pomoc. – liftdeadtrees

0

To dziwne. Twoja konfiguracja maven wygląda świetnie. Powinien przynajmniej kompilować dobrze za pośrednictwem Mavena ... Nie sądzę, że to dlatego, że błąd powinien być inny, ale czy zaktualizowałeś ostatni zestaw SDK do systemu Android 22?

+0

Właśnie aktualizowane, ale problem nadal istnieje. Na końcu mojego pytania dodałem skrót R.java z folderu gen. Nie jestem pewien, czy właśnie to ma działać IntelliJ, czy też jest to przyczyną problemu z AndroidAnnotations? – liftdeadtrees

Powiązane problemy