我正在尝试使用带有Android Studio的REST api(Apiary)构建应用程序,但我不确定能做得好。
这是我的build.gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 11
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
testCompile 'junit:junit:4.12'
compile ('org.glassfish.jersey.containers:jersey-container-servlet:2.14'){
exclude module: 'javax.inject'
}
compile 'org.glassfish.hk2.external:javax.inject:2.5.0-b03'
}
这是我的LoginActivity在lign“响应响应......”崩溃:
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.TextView;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
public class LoginActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Client client = ClientBuilder.newClient();
AutoCompleteTextView mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
EditText mPasswordView = (EditText) findViewById(R.id.password);
TextView responses = (TextView) findViewById(R.id.textView);
//String username = mEmailView.getText().toString();
//String password = mPasswordView.getText().toString();
Entity payload = Entity.json("{ 'username': 'test@test.com', 'password': 'secret', 'client': 'client'}");
Response response = client.target("https://api.***.io/login")
.request(MediaType.APPLICATION_JSON_TYPE)
.post(payload);
if(response.getStatus()==200)
{
responses.setText("OK");
}
else
{
responses.setText("doesnt exist");
}
}
}
但是当我运行应用程序时,我有这个错误:
FATAL EXCEPTION: main
Process: com.example.julie.myapplication, PID: 1253
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLInputFactory;
at org.glassfish.jersey.message.internal.MessagingBinders$MessageBodyProviders.configure(MessagingBinders.java:142)
.
.
.
at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:333)
at com.example.julie.myapplication.LoginActivity.onCreate(LoginActivity.java:33)
.
.
.
Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.xml.stream.XMLInputFactory" on path: DexPathList[[zip file "/data/app/com.example.julie.myapplication-2/base.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
.
.
.
Suppressed: java.lang.ClassNotFoundException: javax.xml.stream.XMLInputFactory
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 35 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
有人明白我做错了什么吗?在此先感谢您的帮助 !