Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Google应用程序引擎异常-当前线程未与任何请求关联,并且不是后台线程_Java_Multithreading_Google App Engine_Google Analytics_Measurement Protocol - Fatal编程技术网

Java Google应用程序引擎异常-当前线程未与任何请求关联,并且不是后台线程

Java Google应用程序引擎异常-当前线程未与任何请求关联,并且不是后台线程,java,multithreading,google-app-engine,google-analytics,measurement-protocol,Java,Multithreading,Google App Engine,Google Analytics,Measurement Protocol,我正试图通过一个跨平台的Java桌面应用程序中的GAE API来访问google analytics。我遵循了github的示例代码,但由于线程问题,请求没有被执行 以下是我的示例代码: ThreadManager.currentRequestThreadFactory().newThread(new Runnable() { @Override public void run() { try { GoogleAccountTracker

我正试图通过一个跨平台的Java桌面应用程序中的GAE API来访问google analytics。我遵循了github的示例代码,但由于线程问题,请求没有被执行

以下是我的示例代码:

ThreadManager.currentRequestThreadFactory().newThread(new Runnable() {
    @Override
    public void run() {
        try {
            GoogleAccountTracker.trackEventToGoogleAnalytics("category1", "action1", "label1", "value1");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

我没有找到任何合适的SO线程来解决我的问题。如果你能找到,请提供我,而不是作为重复的问题标记。如果我得到了有效的解决方案,我会移除我的。
public static int trackEventToGoogleAnalytics(String category, String action, String label, String value) throws IOException {
    Application.LOGGER.info("trackEventToGoogleAnalytics() started");

    Map<String, String> map = new LinkedHashMap<>();
    map.put("v", "1");             // Version.
    map.put("tid", gaTrackingId);
    map.put("cid", gaClientId);
    map.put("t", "event");         // Event hit type.
    map.put("ec", encode(category, true));
    map.put("ea", encode(action, true));
    map.put("el", encode(label, false));
    map.put("ev", encode(value, false));

    HTTPRequest request = new HTTPRequest(GA_URL_ENDPOINT, HTTPMethod.POST);
    request.addHeader(CONTENT_TYPE_HEADER);
    request.setPayload(getPostData(map));

    HTTPResponse response = urlFetchService.fetch(request);

    byte[] content = response.getContent();
    URL finalUrl = response.getFinalUrl();

    // 200, 404, 500, etc
    int responseCode = response.getResponseCode();
    List<HTTPHeader> headers = response.getHeaders();

    for(HTTPHeader header : headers) {
        String headerName = header.getName();
        String headerValue = header.getValue();
        Application.LOGGER.info(headerName + " " + headerValue);
    }

    Application.LOGGER.info("trackEventToGoogleAnalytics() ended");

    return 0; //httpResponse.getResponseCode();
}
Caused by: java.lang.NullPointerException: Current thread is not associated with any request and is not a background thread
    at com.google.appengine.api.ThreadManager.getCurrentEnvironmentOrThrow(ThreadManager.java:106)
    at com.google.appengine.api.ThreadManager.currentRequestThreadFactory(ThreadManager.java:47)