2017-01-27 17 views
5

Tôi đang cố gắng tạo bot Telegram và mã của tôi đã hoạt động, nhưng đột nhiên tôi không thể khởi động chương trình của mình vì nó bị lỗi với lỗi sau. Tôi đã không thay đổi bất kỳ mã nào hoặc làm bất cứ điều gì.java.lang.NegativeArraySizeException khi sử dụng URLConnection

Có lẽ đây là lỗi của hệ điều hành?

Exception in thread "main" javax.net.ssl.SSLException: java.security.ProviderException: java.lang.NegativeArraySizeException 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) 
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) 
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1906) 
    at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1889) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1410) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) 
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) 
    at test.main(test.java:10) 
Caused by: java.security.ProviderException: java.lang.NegativeArraySizeException 
    at sun.security.ec.ECKeyPairGenerator.generateKeyPair(ECKeyPairGenerator.java:147) 
    at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:703) 
    at sun.security.ssl.ECDHCrypt.<init>(ECDHCrypt.java:77) 
    at sun.security.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:721) 
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:281) 
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) 
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) 
    ... 5 more 
Caused by: java.lang.NegativeArraySizeException 
    at sun.security.ec.ECKeyPairGenerator.generateECKeyPair(Native Method) 
    at sun.security.ec.ECKeyPairGenerator.generateKeyPair(ECKeyPairGenerator.java:128) 
    ... 14 more 

Đôi khi kết quả mã trong một lỗi segmentation:

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# SIGSEGV (0xb) at pc=0x00007f2b1fb65711, pid=3982, tid=0x00007f2b2081f700 
# 
# JRE version: OpenJDK Runtime Environment (8.0_111-b16) (build 1.8.0_111-b16) 
# Java VM: OpenJDK 64-Bit Server VM (25.111-b16 mixed mode linux-amd64 compressed oops) 
# Problematic frame: 
# C [libc.so.6+0x14f711] __memmove_avx_unaligned_erms+0x211 
# 
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 
# 
# An error report file with more information is saved as: 
# /tmp/hs_err_pid3982.log 
# 
# If you would like to submit a bug report, please visit: 
# http://bugreport.java.com/bugreport/crash.jsp 
# 
Aborted (luotiin core-tiedosto) 

mã tối thiểu để tạo lại lỗi:

import java.net.URL; 
import java.net.URLConnection; 
import java.io.IOException; 
import java.net.MalformedURLException; 

class test { 
    public static void main(String[] args) throws IOException, MalformedURLException { 
     URL url = new URL("https://api.telegram.org/bot<ID>/getUpdates?offset=0"); 
     URLConnection c = url.openConnection(); 
     c.connect(); 
    } 
} 

Tôi đang chạy mã trên Fedora 25 và OpenJDK.

$ uname -a 
Linux localhost.localdomain 4.9.5-200.fc25.x86_64 #1 SMP Fri Jan 20 12:24:16 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 
$ java -version 
openjdk version "1.8.0_111" 
OpenJDK Runtime Environment (build 1.8.0_111-b16) 
OpenJDK 64-Bit Server VM (build 25.111-b16, mixed mode) 
+2

Xuất hiện do bản cập nhật NSS gần đây trên Fedora, xem https://bugzilla.redhat.com/show_bug.cgi?id=1415137 – vip

Trả lời

4

Kiểm tra phiên bản thư viện NSS của bạn, nss 3,28 dường như phá vỡ nội dung cho java. Nó cũng xảy ra trên gentoo: https://bugs.gentoo.org/show_bug.cgi?id=605430

Hạ cấp xuống nss 3.27.x cũng đã sửa nó cho tôi và những người khác.

Các vấn đề liên quan