无法解析符号'MyApi“ [英] Cannot resolve symbol 'MyApi'

查看:218
本文介绍了无法解析符号'MyApi“的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

MyApi是完全没有问题了。我加物化的依赖关系,与一些终端一起,和所有突然它说,MyApi不是个东西!

下面就是我把它叫做:

 进口android.content.Context;
进口android.os.AsyncTask;
进口android.util.Pair;
进口android.widget.Toast;进口com.google.api.client.extensions.android.http.AndroidHttp;
进口com.google.api.client.extensions.android.json.AndroidJsonFactory;
进口com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
进口com.google.api.client.googleapis.services.GoogleClientRequestInitializer;进口java.io.IOException异常;类SendRegisterInfo扩展的AsyncTask<对<语境,字符串>中太虚,字符串> {
    私有静态MyApi myApiService = NULL;
    私人上下文的背景下;    @覆盖
    保护字符串doInBackground(对<语境,字符串> ... PARAMS){
        如果(myApiService == NULL){//只有这样做一次
            MyApi.Builder建设者=新MyApi.Builder(AndroidHttp.newCompatibleTransport()
                    新AndroidJsonFactory(),NULL)
                    反对地方devappserver运行//选项
                    // - 在Android模拟器10.0.2.2为localhost的IP地址
                    // - 反对地方devappserver运行时关闭COM pression
                    .setRootUrl(http://10.0.2.2:8080/_ah/api/)
                    .setGoogleClientRequestInitializer(新GoogleClientRequestInitializer(){
                        @覆盖
                        公共无效初始化(AbstractGoogleClientRequest<>
                                                       abstractGoogleClientRequest)
                                抛出IOException
                            abstractGoogleClientRequest.setDisableGZipContent(真);
                        }
                    });
            //为devappserver结束选项            myApiService = builder.build();
        }        上下文=参数[0]。首先,
        字符串名称=参数[0]。第二;        尝试{
            返回myApiService.sayHi(名称).execute()的getData();
        }赶上(IOException异常五){
            返回e.getMessage();
        }
    }    @覆盖
    保护无效onPostExecute(字符串结果){
        Toast.makeText(上下文,结果,Toast.LENGTH_LONG).show();
    }
}

下面是客户端的文件的gradle:

 应用插件:'com.android.application安卓{
    compileSdkVersion 22
    buildToolsVersion22.0.1    defaultConfig {
        的applicationIDgrademe.ip.com.grademe
        15的minSdkVersion
        targetSdkVersion 22
        版本code 1
        的versionName1.0
    }
    buildTypes {
        发布 {
            minifyEnabled假
            proguardFiles getDefaultProguardFile('proguard的-android.txt'),'proguard-rules.pro
        }
    }
}依赖{
    编译文件树(导演:'库',包括:['的* .jar'])
    编译com.android.support:appcompat-v7:22.0.0
    编制项目(路径:':后端,配置:Android的终端)
}

下面是后端的文件的gradle:

  buildscript {
    库{
        jcenter()
    }
    依赖{
        类路径'com.google.appengine:gradle这个-AppEngine上 - 插件:14年9月1日
    }
}库{
    jcenter();
}应用插件:Java的
应用插件:战争
应用插件:应用引擎sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7依赖{
    appengineSdk'com.google.appengine:AppEngine上-Java的SDK:14年9月1日
    编译com.google.appengine:AppEngine上的端点:14年9月1日
    编译com.google.appengine:AppEngine上的端点-DEPS:14年9月1日
    编译'的javax.servlet:servlet的API:2.5
    编译com.google code.objectify:物化:5.0.3
}AppEngine上{
    downloadSdk =真
    appcfg {
        的oauth2 =真
    }
    端点{
        getClientLibsOnBuild =真
        getDiscoveryDocsOnBuild =真
    }
}


解决方案

发现问题!我相信这是我在我的web.xml文件中的空格在<参数值方式> 项目的后端侧元素

 <?XML版本=1.0编码=UTF-8&GT?;
< web应用程序的xmlns =htt​​p://java.sun.com/xml/ns/javaee版本=2.5>
    <&servlet的GT;
        < servlet的名称>&SystemServiceServlet LT; / servlet的名称>
        <的servlet类> com.google.api.server.spi.SystemServiceServlet< / servlet的类>
        <初始化参数>
            <参数-名称>服务和LT; /参数 - 名称>
            <参数值> com.ip.grademe.server.MyEndpoint,com.ip.grademe.server.UserEndpoint,com.ip.grademe.server.UniversityEndpoint< /参数值>
        < /初始化参数>
    < / servlet的>    < Servlet映射>
        < servlet的名称>&SystemServiceServlet LT; / servlet的名称>
        < URL模式> / _啊/ SPI / *< / URL模式>
    < / Servlet映射>    <欢迎-文件列表>
        <欢迎-文件>&index.html的LT; /欢迎-文件>
    < /欢迎-文件列表>
< / web-app的>

改变为这

 <?XML版本=1.0编码=UTF-8&GT?;
< web应用程序的xmlns =htt​​p://java.sun.com/xml/ns/javaee版本=2.5>
    <&servlet的GT;
        < servlet的名称>&SystemServiceServlet LT; / servlet的名称>
        <的servlet类> com.google.api.server.spi.SystemServiceServlet< / servlet的类>
        <初始化参数>
            <参数-名称>服务和LT; /参数 - 名称>
            <param-value>com.ip.grademe.server.MyEndpoint,com.ip.grademe.server.UserEndpoint,com.ip.grademe.server.UniversityEndpoint</param-value>
        &LT; /初始化参数&GT;
    &LT; / servlet的&GT;    &LT; Servlet映射&GT;
        &LT; servlet的名称&gt;&SystemServiceServlet LT; / servlet的名称&gt;
        &LT; URL模式&GT; / _啊/ SPI / *&LT; / URL模式&GT;
    &LT; / Servlet映射&GT;    &LT;欢迎-文件列表&gt;
        &LT;欢迎-文件&gt;&index.html的LT; /欢迎-文件&gt;
    &LT; /欢迎-文件列表&gt;
&LT; / web-app的&GT;

和它的工作!

MyApi was perfectly fine before. I added Objectify to the dependencies, along with some endpoints, and all of a sudden it says that MyApi isn't a thing!

Here's where I call it:

import android.content.Context;
import android.os.AsyncTask;
import android.util.Pair;
import android.widget.Toast;

import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.extensions.android.json.AndroidJsonFactory;
import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
import com.google.api.client.googleapis.services.GoogleClientRequestInitializer;

import java.io.IOException;

class SendRegisterInfo extends AsyncTask<Pair<Context, String>, Void, String> {
    private static MyApi myApiService = null;
    private Context context;

    @Override
    protected String doInBackground(Pair<Context, String>... params) {
        if(myApiService == null) {  // Only do this once
            MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(),
                    new AndroidJsonFactory(), null)
                    // options for running against local devappserver
                    // - 10.0.2.2 is localhost's IP address in Android emulator
                    // - turn off compression when running against local devappserver
                    .setRootUrl("http://10.0.2.2:8080/_ah/api/")
                    .setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
                        @Override
                        public void initialize(AbstractGoogleClientRequest<?>
                                                       abstractGoogleClientRequest)
                                throws IOException {
                            abstractGoogleClientRequest.setDisableGZipContent(true);
                        }
                    });
            // end options for devappserver

            myApiService = builder.build();
        }

        context = params[0].first;
        String name = params[0].second;

        try {
            return myApiService.sayHi(name).execute().getData();
        } catch (IOException e) {
            return e.getMessage();
        }
    }

    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(context, result, Toast.LENGTH_LONG).show();
    }
}

Here's the gradle file for the client:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "grademe.ip.com.grademe"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile project(path: ':backend', configuration: 'android-endpoints')
}

Here's the gradle file for the backend:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.14'
    }
}

repositories {
    jcenter();
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7

dependencies {
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.14'
    compile 'com.google.appengine:appengine-endpoints:1.9.14'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.14'
    compile 'javax.servlet:servlet-api:2.5'
    compile 'com.googlecode.objectify:objectify:5.0.3'
}

appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
    endpoints {
        getClientLibsOnBuild = true
        getDiscoveryDocsOnBuild = true
    }
}

解决方案

Found the problem! I believe it is the whitespace that I had in my web.xml document in the <param-value> element in the backend side of the project.

This

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.ip.grademe.server.MyEndpoint, com.ip.grademe.server.UserEndpoint, com.ip.grademe.server.UniversityEndpoint</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

was changed to this

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.ip.grademe.server.MyEndpoint,com.ip.grademe.server.UserEndpoint,com.ip.grademe.server.UniversityEndpoint</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

and it worked!

这篇关于无法解析符号'MyApi“的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆