标签: android-annotations

移动到Android Annotations v.2.7之后的java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy

在转移到Android Annotations v.2.7后,我在eclipse中构建项目时遇到了问题,同时maven构建还可以.这是来自eclipse错误日志的堆栈跟踪:

Error
Mon Nov 05 15:49:49 GMT+02:00 2012
Errors running builder 'Java Builder' on project 'heroes'.

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
    at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:653)
    at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:460)
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286)
    at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
    at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070)
    at java.lang.Class.getAnnotation(Class.java:3029)
    at javax.annotation.processing.AbstractProcessor.getSupportedSourceVersion(AbstractProcessor.java:103)
    at org.eclipse.jdt.internal.compiler.apt.dispatch.ProcessorInfo.<init>(ProcessorInfo.java:56)
    at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.discoverNextProcessor(IdeAnnotationProcessorManager.java:94)
    at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:116)
    at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:159)
    at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:134)
    at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:820)
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434)
    at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:365)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:178)
    at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:302)
    at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:60)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:254)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:178)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) …
Run Code Online (Sandbox Code Playgroud)

android android-annotations

5
推荐指数
1
解决办法
4万
查看次数

Gson序列化错误类com.activeandroid.DatabaseHelper声明了多个名为mContext的JSON字段

我得到的错误是"java.lang.IllegalArgumentException:class com.activeandroid.DatabaseHelper声明了多个名为mContext的JSON字段"

我正在使用AndroidAnnotations RestClient从我的Web服务中提取数据并序列化为POJO.使用ORMLite时序列化工作正常,但我最近决定试用Active Android,现在我的类扩展了Model.Gson正在序列化我无法控制的父类.无论如何,我只能包含某些字段,或者只是从RestClient返回普通的JSON,并以不同的方式进行序列化

@Rest(rootUrl = "http://stuff...com", converters = { GsonHttpMessageConverter.class })
    public interface RestClient {
    @Get("/AndroidController/createFacebookUser?facebookToken={facebookToken}&catIds=    {catIds}")
    User createFacebookUser(String facebookToken,String catIds);
}
Run Code Online (Sandbox Code Playgroud)

用户模型是

@Data
@Table(name = "Users")
public class User extends Model {
@Column(name = "SystemID")
private String systemID;
@Column(name = "Name")
private String name;
public List<GameEntry> items() {
    return getMany(GameEntry.class, "Category");
}

public User(){}
Run Code Online (Sandbox Code Playgroud)

}

android gson resttemplate activeandroid android-annotations

5
推荐指数
1
解决办法
4530
查看次数

IntelliA中的AndroidAnnotations处理失败,因为未生成R.java

我认为IntelliJ在生成R.java文件时存在一些问题,导致AndroidAnnotations出现问题,因为它无法解析布局的资源ID.

这是我的活动:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,即使我注释掉注释,并且确实如此setContentView(R.layout.main),即使从未导入R.java,它也能正常工作.

顺便说一句,布局只是一个简单的"Hello World".没有什么奇怪的事情发生在那里.

无论我做什么,我都无法生成AndroidAnnotations CanvasActivity_.java.我的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/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> …
Run Code Online (Sandbox Code Playgroud)

android intellij-idea maven android-annotations

5
推荐指数
1
解决办法
1931
查看次数

带AndroidAnnotations的Android Studio - >这些类型不会进行注释处理

我不确定它是Android Studio(0.1.9)还是AndroidAnnotation问题,但是,最近我无法制作和编译我的AndroidAnnotations项目.

好的,所以我尝试制作项目,这就是我在"消息"窗口中得到的内容:

Information:Round 1:
Information:    input files: {com.antyzero.sidereelo.ui.activity.SplashActivity}
Information:    annotations: [com.googlecode.androidannotations.annotations.EActivity, java.lang.Override]
Information:    last round: false
Information:Processor com.googlecode.androidannotations.AndroidAnnotationProcessor matches [com.googlecode.androidannotations.annotations.EActivity] and returns true.
Information:Note: Starting AndroidAnnotations annotation processing
Information:Round 2:
Information:    input files: {com.antyzero.sidereelo.ui.activity.SplashActivity_}
Information:    annotations: [java.lang.Override]
Information:Processor com.googlecode.androidannotations.AndroidAnnotationProcessor matches [] and returns true.
Information:Round 3:
Information:    input files: {}
Information:    annotations: []
Information:    last round: true
Information:Compilation completed successfully with 1 warning in 17 sec
Information:0 errors
Information:1 warning
Warning:: Unclosed files for the types '[dummy1372862415557]'; these types …
Run Code Online (Sandbox Code Playgroud)

android android-annotations android-studio

5
推荐指数
1
解决办法
2540
查看次数

Gradle + AndroidAnnotations会产生重复的类错误 - 需要在每次构建之前清理项目

我在使用gradle构建将IntelliJ IDEA项目迁移到Android Studio时遇到问题.我已经设置了AndroidAnnotations库,就像其他各种帖子中推荐的一样,它工作得很好.但是,当多次编译我的项目而不执行:clean其间的任务时,我收到以下错误消息:

/project-dir/build/source/apt_generated/flavor1/release/com/example/app/MyActivity_.java:15: error: duplicate class: com.example.app.MyActivity_

[more errors here...]
Run Code Online (Sandbox Code Playgroud)

我相信系列中的多个构建失败,因为AndroidAnnotations *_.java总是在:compile任务之前重新创建文件(不检查是否有必要)和:compile任务识别新文件(例如使用时间戳)但已经将它们作为预编译*.class文件找到因此抛出错误.这可能吗?我该如何防止这种行为?我可以为AndroidAnnotations添加必要性检查吗?或者这是另一个问题吗?


更新1:似乎从AndroidAnnotations本身抛出错误,因为:compile我删除时会起作用*.javaapt_generated手动文件夹内的文件时工作.


更新2:

我删除了以下一行 build.gradle:

// Automatically add the generated source code to the source set
android.sourceSets[getSourceSetName(variant)].java.srcDirs += aptOutput
Run Code Online (Sandbox Code Playgroud)

我不知道为什么没有这条线就行.由于我没有使用Android Studio添加文件夹Mark Directory as > Sources Root.可能这是缓存的一些结果?或者gradle以某种方式将我生成的java文件自动添加到类路径中?

尽管如此,我还是会感谢任何评论.


更新3 /解决方案

删除行并将gradle构建文件与Android Studio同步后,自动生成的源代码将作为源根删除,从而导致IDE显示缺少类的错误.

最终,我在Android Annotations github问题上找到了解决方案:https://github.com/excilys/androidannotations/issues/676

我重新添加了将其添加到源集的语句(允许Android Studio将其显示为源根).此外,我使用以下方法从变种源集合中删除了文件:

variant.javaCompile.source = variant.javaCompile.source.filter { p ->
    return !p.getPath().startsWith(aptOutputDir.getPath())
}
Run Code Online (Sandbox Code Playgroud)

现在识别生成的文件,并且重复的类错误消失了.

最好的问候,大卫 …

android gradle annotation-processing android-annotations android-studio

5
推荐指数
1
解决办法
2678
查看次数

Android REST POST失去日期值

我有一个Android应用程序(Spring Android + Android Annotations + Gson),它使用来自Web应用程序(Jersey + Spring + Hibernate/JPA)的REST服务.问题是我的java.util.Date属性没有序列化:

活动(Android应用程序):

...
@Click(R.id.buttonLogin)
void onLoginClick() {
    Student student = new Student();
    student.setDateRegistration(new Date()); //Property where the problem occurs
    student.setFirstName("Venilton");
    student.setGender(Gender.M);

    doSomethingInBackground(student);
}

@Background
void doSomethingInBackground(Student student) {
    this.restClient.insert(student);
}
...
Run Code Online (Sandbox Code Playgroud)

休息客户端(Android应用程序):

@Rest(rootUrl = "http://MY_IP:8080/restful-app", 
    converters = { GsonHttpMessageConverter.class })
public interface StudentRESTfulClient {

    @Post("/student/insert")
    Student insert(Student student);
}
Run Code Online (Sandbox Code Playgroud)

Rest Server(Web App):

@Component
@Path("/student")
public class StudentRESTfulServer {

    @Autowired
    private StudentService studentServiceJpa;

    @POST 
    @Path("/insert")
    public Student insert(Student student) {
        //student.getDateRegistration() …
Run Code Online (Sandbox Code Playgroud)

java rest android gson android-annotations

5
推荐指数
1
解决办法
716
查看次数

使用AndroidAnnotations处理超时(Spring Rest)

基本上,我今天面临的是以下几点:

  • 处理休息操作时处理请求超时.

看起来很简单,但编码并不容易.

这是我到目前为止的实现:

List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
interceptors.add( new NetworkInterceptor() );

tpl.setInterceptors( interceptors );
Run Code Online (Sandbox Code Playgroud)

所以现在,在设置拦截器之后,我想为模板设置自定义超时配置.

所以我做了以下事情: tpl.getRequestFactory().

如果没有设置拦截器,则返回a InterceptingClientHttpRequestFactory而不是SimpleClientHttpRequestFactory返回.

因此,当它返回该InterceptingClientHttpRequestFactory实例时,我无法设置超时.

您可以查看Spring的源代码,最后一种方法:http://grepcode.com/file_/repo1.maven.org/maven2/org.springframework/spring-web/3.1.1.RELEASE/org/springframework/http/客户机/支撑/ InterceptingHttpAccessor.java /?v =源

所以...任何提示?

rest spring android spring-mvc android-annotations

5
推荐指数
2
解决办法
3913
查看次数

androidannotations @AfterViews没有调用并且editText为null

我有一个课程,它是从Fragment扩展的。在一个类中,我的editText为null,并且@AfterViews没有调用,这是我的代码:

@EFragment
public class Search extends Fragment {

private final String TAG = Search.class.getCanonicalName();
private static ProgressDialog progressDialog;
private Activity activity;
private ArrayList<String> urlList = new ArrayList<String>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.search, container, false);
    Log.i(TAG, "onCreateView");
    return rootView;
}
@ViewById
RadioButton firstRadio;

@ViewById
RadioButton secondRadio;

@ViewById(R.id.editText1)
EditText editText1;

@AfterViews
void afterViews() {
    int a = 1;
    a++;
    Log.i(TAG, editText1 + "AfterViews");
    Log.i(TAG, a + "aaaaaaaa");
}

private void extractUrlsFromText(String s) { …
Run Code Online (Sandbox Code Playgroud)

xml android android-annotations

5
推荐指数
1
解决办法
2731
查看次数

无法让@ViewById在@EBean中工作

  @EActivity(R.layout.data_layout) 
   public class MyActivity extendsActivity 
   {    
     @Bean    MyEbean bean;

      @AfterViews    
      public void setupView() 
      {
        bean.loadData("Test name");    
      } 
    }

   @EBean public class MyEbean 
   {    
     @RootContext    context;

      @ViewById(R.id.name_field)    
      TextView nameField;

     public void loadData(String name) 
     {
       nameField.setText(name);   
     } 
} 
Run Code Online (Sandbox Code Playgroud)

loadData()中的"nameField"为null.同时如果我在loadData()内执行此操作

nameField = (TextView)((Activity)context).findViewById(R.id.name_field);       it's all good. So the view isdefinitely there. Also if I call this method from a retrofit callback
Run Code Online (Sandbox Code Playgroud)

(即延迟后)"名称"自动填充.

我正在使用Android Annotations 3.3.2

android android-annotations

5
推荐指数
1
解决办法
120
查看次数

尝试投射“attachBadgeDrawable”时的 Kotlin 问题:此声明是可选的

BadgeDrawable我会在我的 Android 应用程序中使用a Button,问题是当我尝试设置按钮布局时,badgeDrawableattachBadgeDrawable收到一个错误,其中显示:

his declaration is opt-in and its usage should be marked with  '@com.google.android.material.badge.ExperimentalBadgeUtils' or '@OptIn(markerClass = com.google.android.material.badge.ExperimentalBadgeUtils.class)'
Run Code Online (Sandbox Code Playgroud)

我使用那段代码的代码如下:

            btnInvia.viewTreeObserver.addOnGlobalLayoutListener(
                object : OnGlobalLayoutListener {
                    override fun onGlobalLayout() {
                        val badgeDrawable = BadgeDrawable.create(requireContext())
                        badgeDrawable.number = corpo
                        badgeDrawable.verticalOffset = 20
                        badgeDrawable.horizontalOffset = 15
                        BadgeUtils.attachBadgeDrawable(badgeDrawable, btnInvia, layoutInvia)
                        btnInvia.viewTreeObserver.removeOnGlobalLayoutListener(this)
                    }

                }
            )
Run Code Online (Sandbox Code Playgroud)

如果有用的话最小 SDK 是 24。

android kotlin android-annotations material-components-android androidx

5
推荐指数
1
解决办法
6702
查看次数