java - 在 Android 中使用 Java API

标签 java android printing logging system.out

我正在尝试运行 this API java在安卓中。由于 Android 中没有终端,System.out.printlne.printStackTrace 无法编译,我尝试在 CartoDBClient 中替换它> 和 SecuredCartoDBClient 类,我在其中找到了它们。但是,即使这样做,应用程序也会意外关闭,并在 LogCat 中出现这些错误

这里是代码

SecuredCartoDBClient:

@Override

    public String executeQuery(String sqlQuery){
        String json = null;
        if(oAuthService == null){
            //System.out.println("Error : uninitialized " + getClass().getName());
            Log.e(TAG, "Error : uninitialized " + getClass().getName(), null);
            return null;
        }
        OAuthRequest request = new OAuthRequest(Verb.POST, securedApiUrl);
        request.addBodyParameter("q", sqlQuery);
        oAuthService.signRequest(accessToken, request);
        Response response = request.send();
        if(!response.isSuccessful()){
            //System.out.println("The query " + sqlQuery + " failed.");
            Log.w(TAG, "The query " + sqlQuery + " failed.", null);
            //System.out.println("Response code : " + response.getCode());
            Log.i(TAG, "Response code : " + response.getCode(), null);
        }
        json = response.getBody();
        return json;
    }

CartoDBClient.java..

@Override

    public String executeQuery(String sqlQuery){
        String json = null;
        if(apiURL == null){
            //System.out.println("Error : uninitialized " + getClass().getName());
            Log.e(sqlQuery, "Error : uninitialized " + getClass().getName());
            return null;
        }
        try {
            sqlQuery = URLEncoder.encode(sqlQuery,ENCODING);
            json = IOUtils.toString(new URL(apiURL+sqlQuery), ENCODING);
        } catch (MalformedURLException e) {
            //System.out.println("Could not get URL " + apiURL+sqlQuery);
            Log.w(TAG, "Could not get URL " + apiURL+sqlQuery);
            Log.e(TAG, Log.getStackTraceString(e)); 
            //e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            Log.e(TAG, Log.getStackTraceString(e));
            //e.printStackTrace();
        }catch (IOException e) {
            //System.out.println("Could not execute " + sqlQuery+ " on CartoDB : ");
            Log.w(TAG, "Could not execute " + sqlQuery+ " on CartoDB : ");
            Log.e(TAG, Log.getStackTraceString(e));
            //e.printStackTrace();
        }
        return json;
    }

这里是logcat中出现的错误

05-04 19:58:39.128: E/AndroidRuntime(372): FATAL EXCEPTION: main

05-04 19:58:39.128: E/AndroidRuntime(372): java.lang.NoClassDefFoundError: org.apache.commons.io.IOUtils

05-04 19:58:39.128: E/AndroidRuntime(372):  at com.geocap.impl.CartoDBClient.executeQuery(CartoDBClient.java:84)

05-04 19:58:39.128: E/AndroidRuntime(372):  at com.geocap.Geocap.onCreate(Geocap.java:25)

05-04 19:58:39.128: E/AndroidRuntime(372):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)

05-04 19:58:39.128: E/AndroidRuntime(372):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)

05-04 19:58:39.128: E/AndroidRuntime(372):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)

05-04 19:58:39.128: E/AndroidRuntime(372):  at android.app.ActivityThread.access$1500(ActivityThread.java:123)

05-04 19:58:39.128: E/AndroidRuntime(372):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)

05-04 19:58:39.128: E/AndroidRuntime(372):  at android.os.Handler.dispatchMessage(Handler.java:99)

05-04 19:58:39.128: E/AndroidRuntime(372):  at android.os.Looper.loop(Looper.java:126)

05-04 19:58:39.128: E/AndroidRuntime(372):  at 
android.app.ActivityThread.main(ActivityThread.java:3997)

05-04 19:58:39.128: E/AndroidRuntime(372):  at java.lang.reflect.Method.invokeNative(Native Method)

05-04 19:58:39.128: E/AndroidRuntime(372):  at java.lang.reflect.Method.invoke(Method.java:491)

05-04 19:58:39.128: E/AndroidRuntime(372):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)

05-04 19:58:39.128: E/AndroidRuntime(372):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)

05-04 19:58:39.128: E/AndroidRuntime(372):  at dalvik.system.NativeStart.main(Native Method)

感谢您在此事上的帮助。

最佳答案

我猜您还没有将 org.apache.commons lib 添加到您的项目或类路径中。

在这里您可以找到必要的组件并将其添加到您的项目中: http://commons.apache.org/components.html

您可能缺少 IO 组件。不要忘记将其添加到您的类路径中!

关于java - 在 Android 中使用 Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10455632/

相关文章:

Android Listener 关闭上下文菜单

c++ - 初始化我的数组时出错

java - 是否有任何 Android API 来获取 CPU 和电池状态?

java - 使用 Google 通过 Java 进行搜索

java - 在 Swing 中保持 View 状态

php - xdebug 跟踪/跟踪 php 回显,打印调用

Python 打印结果为 '7\xe6\x9c\x8810\xe6\x97\xa5' ,但我想要 '7月10日'

java - 有没有办法在 jpanel 中渲染 pdf 文件?

android - 不一致的 AlarmManager 性能

java - java.lang.String 类型的 Android fragment JSON <!DOCTYPE 无法转换为 JSONArray