2017-08-02 4 views
0

私はこのコードをコンパイルした後、JavaがエラージャクソンJsonSerializer

Error:java: java.lang.StackOverflowError 

をスローJaskcon

public class NullSerializer extends JsonSerializer<Object> { 

    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { 
     jgen.writeString(""); 
    } 
} 

たシンプルなシリアライザを持っている私は

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.5.1</version> 
</dependency> 

任意のアイデアを、この依存関係を使用していますか?

答えて

1

は私のために完全によく作品:

public class Main { 
    static class NullSerializer extends JsonSerializer<Object> { 

    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { 
     jgen.writeString(""); 
    } 
    } 

    public static void main(String[] args) throws Exception { 
    ObjectMapper m = new ObjectMapper(); 
    SimpleModule module = new SimpleModule(); 
    module.addSerializer(Object.class, new NullSerializer()); 
    m.registerModule(module); 
    System.out.println(m.writeValueAsString(
     Arrays.asList(true, 1, "String", new HashMap()) 
    )); //prints "", while without registerModule - [true,1,"String",{}] 
    } 
} 

私はどこか別の場所になります。

1つは、Xss for Mavenを確認してください。少なくとも-Xss256kである必要があります。コンパイラはスタックとは異なるスタックを使用し、時にはスタック上に構造体を置くため、より多くの、あるいはより良いものが必要になります。

あなたのコードがGWTコンパイラに公開されている場合は、この状況では典型的な応答になるため、GWTを使用しないことをお勧めします。

ほとんどの場合、コンパイラで本物のバグが見つかった可能性があります。

Mavenで--debugオプションを使用してみると、多分詳細情報が表示されます。