Я получаю неожиданную внутреннюю ошибку при попытке разобрать строку JSON - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь проанализировать остаток ответа от моего веб-сервера Python.Я успешно получил строку содержимого JSON.Чтобы упростить проблему, я сейчас просто пытаюсь разобрать тестовую строку, показанную ниже.

Мои тестовые сценарии Python хорошо разбирают строку, но это для плагина Java, поэтому я пытаюсь перевести его в Java.

Я выполнил несколько копий того же примера.

               String inputJSONs = "{\"connections\":[{\"num\":\"1\"},{\"num\":\"2\"}]}";


                System.out.println("testing");
                JSONObject jsono = new JSONObject(inputJSONs);

                System.out.println("parsed json");
                JSONArray arr = jsono.getJSONArray("connections");

                System.out.println("have arr");
                System.out.println(arr);


ОШИБКА oagrest.RESTExceptionMapper - непредвиденная внутренняя ошибка: org / json / JSONObject

Я думаю, что структура плагина (apache guacamole) может скрывать более подробную ошибку, но я не могу быть уверен.

Добавление полного примера (удаление всего, что я мог воспроизвести)

package org.apache.guacamole.auth;

import java.util.HashMap;
import java.util.Map;

import java.lang.StringBuilder;
import org.json.JSONObject;
import org.json.JSONArray;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.GuacamoleServerException;
import org.apache.guacamole.environment.Environment;
import org.apache.guacamole.environment.LocalEnvironment;
import org.apache.guacamole.net.auth.simple.SimpleAuthenticationProvider;
import org.apache.guacamole.net.auth.Credentials;
import org.apache.guacamole.protocol.GuacamoleConfiguration;

public class RestAuthenticationProvider extends SimpleAuthenticationProvider {

    private final Environment environment;

    private Logger logger = LoggerFactory.getLogger(RestAuthenticationProvider.class.getClass());

    public RestAuthenticationProvider() throws GuacamoleException{
        environment = new LocalEnvironment();
    }

    @Override
    public String getIdentifier() {
        logger.info("====Get Identifier====");
        return "Rest API";
    }

    @Override
    public Map<String, GuacamoleConfiguration>
        getAuthorizedConfigurations(Credentials credentials)
            throws GuacamoleException {

            if (credentials.getUsername() == null ){
              return null;
            }

            String inputJSONs = "{\"connections\":[{\"num\":\"1\"},{\"num\":\"2\"}]}";
            System.out.println("testing 2");
            System.out.println(inputJSONs);
            JSONObject jsono = new JSONObject(inputJSONs);
            System.out.println("parsed json");
            JSONArray arr = jsono.getJSONArray("connections");
            System.out.println("have arr");
            System.out.println(arr);

            return null;
    }

}

Сразу после входа в систему сервер выводит следующее

testing 2
{"connections":[{"num":"1"},{"num":"2"}]}
12:00:00.129 [http-nio-8080-exec-8] ERROR o.a.g.rest.RESTExceptionMapper - Unexpected internal error: org/json/JSONObject

1 Ответ

0 голосов
/ 24 июня 2019

Мне удалось сузить его с помощью форума, специализирующегося на гуакамоле.Последнее исправление состояло в том, чтобы maven создал толстый флягу со встроенными зависимостями.

Я добавил следующее в свой pom.xml

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4.1</version>
        <configuration>
                <!-- get all project dependencies -->
                <descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <!-- MainClass in mainfest make a executable jar -->
                <archive>
                  <manifest>
<mainClass>com.mkyong.core.utils.App</mainClass>
                  </manifest>
                </archive>

        </configuration>
        <executions>
          <execution>
                <id>make-assembly</id>
                <!-- bind to the packaging phase -->
                <phase>package</phase>
                <goals>
<goal>single</goal>
                </goals>
          </execution>
        </executions>
</plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...