无法解析符号'MyApi“ [英] Cannot resolve symbol 'MyApi'
本文介绍了无法解析符号'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 =http://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 =http://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屋!
查看全文