เหตุผลที่เป็นทางการสำหรับ“ ซอฟต์แวร์ทำให้การเชื่อมต่อยกเลิก: ข้อผิดพลาดในการเขียนซ็อกเก็ต”


157

รับตัวอย่างสแต็กการติดตามนี้

เกิดจาก: java.net.SocketException: ซอฟต์แวร์ทำให้เกิดการยกเลิกการเชื่อมต่อ: ข้อผิดพลาด
 ในการเขียนซ็อกเก็ตที่ java.net.SocketOutputStream.socketWrite0 (วิธีดั้งเดิม)

ฉันพยายามตอบคำถามต่อไปนี้:

  1. รหัสอะไรที่จะโยนข้อยกเว้นนี้ (JVM? / Tomcat? / รหัสของฉัน?)
  2. ทำให้เกิดข้อยกเว้นนี้จะถูกโยนอะไร

เกี่ยวกับ # 1:

แหล่งที่มาของ JVM ของซันไม่มีข้อความที่แน่นอนนี้ แต่ฉันคิดว่าข้อความซอฟต์แวร์ที่ทำให้เกิดการยกเลิกการเชื่อมต่อ: ข้อผิดพลาดในการเขียนซ็อกเก็ตเกิดจากการใช้งานดั้งเดิมSocketOutputStream:

private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
                 int len) throws IOException;

เกี่ยวกับ # 2

ฉันเดาว่ามันเกิดขึ้นเมื่อลูกค้าได้ยกเลิกการเชื่อมต่อก่อนที่จะได้รับการตอบสนองอย่างเต็มที่ (เช่นส่งคำขอ แต่ก่อนที่จะได้รับการตอบสนองอย่างเต็มรูปแบบมันก็ปิด / ยุติ / ออฟไลน์)

คำถาม:

  1. สมมติฐานข้างต้นถูกต้อง (# 1 และ # 2) หรือไม่
  2. สิ่งนี้สามารถแตกต่างจากสถานการณ์: "ไม่สามารถเขียนถึงลูกค้าเนื่องจากข้อผิดพลาดของเครือข่ายทางฝั่งเซิร์ฟเวอร์ " หรือไม่? หรือว่าจะทำให้ข้อความผิดพลาดเดียวกัน?
  3. และที่สำคัญที่สุด: มีเอกสารอย่างเป็นทางการ (เช่นจากซัน) ที่ระบุข้างต้นหรือไม่?

ฉันต้องมีหลักฐานว่าการติดตามสแต็กนี้เป็น "ความผิดพลาด" ของซ็อกเก็ตไคลเอ็นต์และไม่มีสิ่งใดที่เซิร์ฟเวอร์สามารถทำได้เพื่อหลีกเลี่ยงปัญหานี้ (ยกเว้นการจับข้อยกเว้นหรือการใช้ไม่ใช่ JVM SocketOutputStream แม้ว่าทั้งสองจะไม่หลีกเลี่ยงความจริงที่ว่าไคลเอ็นต์ได้ยกเลิก)


ฉันมีปัญหานี้เมื่อยกเลิกการดาวน์โหลดด้วย Firefox
koppor

เฮ้ Eran นอกจากนี้ผมยังได้รับข้อยกเว้นนี้ขณะที่การส่ง / เขียน ( outs.write(audioBytes);) ในการที่จะbyte[] OutputStreamเมื่อเสียงกำลังคลี่คลายและในขณะที่เล่นถ้าผู้ใช้คลิกที่เมนูอื่น ๆ (ซึ่งส่งคำขอเซิร์ฟเวอร์) ฉันได้รับข้อผิดพลาดเดียวกันบนคอนโซล ดังนั้นจะปลอดภัยหรือไม่ที่จะละเว้นข้อยกเว้นนี้
Amogh

1
@Amogh - ดูเหมือนว่าใช่ โดยทั่วไปจากคำตอบที่อธิบายนี่เป็นข้อผิดพลาดเฉพาะของ Windows แต่ฉันคิดว่าบน Linux คุณจะได้รับข้อยกเว้นเดียวกันกับถ้อยคำที่แตกต่างกัน ... (คำศัพท์ธรรมดาของฉันเข้าใจว่ามันเกิดขึ้นเมื่อคุณส่ง ผ่านซ็อกเก็ตไปยังตำแหน่งระยะไกลบางแห่ง X และ X ถูกตัดการเชื่อมต่อตรงกลาง แต่ฉันแน่ใจว่ามันไม่ใช่วิธีที่แม่นยำที่สุดในการอธิบาย)
Eran Medan

1
สำหรับฉันสิ่งนี้เกิดขึ้นเมื่อเซิร์ฟเวอร์ฐานข้อมูลเริ่มต้นใหม่และแอปพลิเคชันยังคงพยายามสืบค้นโดยใช้การเชื่อมต่อที่เปิดไว้ก่อนหน้านี้ ไม่แน่ใจว่าเพราะเหตุใดสิ่งเหล่านี้จึงไม่รีเฟรชเนื่องจากเราใช้การรวมกลุ่มด้วย DBCP แต่การเริ่มต้นแอปพลิเคชันใหม่ช่วยแก้ไขปัญหาได้
Kshitiz Sharma

คำตอบ:


55

ข้อผิดพลาดนี้สามารถเกิดขึ้นได้เมื่อระบบเครือข่ายท้องถิ่นยกเลิกการเชื่อมต่อเช่นเมื่อ WinSock ปิดการเชื่อมต่อที่สร้างไว้แล้วหลังจากการส่งข้อมูลซ้ำล้มเหลว

ดูบทความนี้ MSDN ดูเพิ่มเติมข้อมูลบางอย่างเกี่ยวกับซอฟแวร์ที่เกิดจากการยกเลิกการเชื่อมต่อ '



3
@ MatGessel บทความนั้นเพิ่งสร้างความสับสนซ้ำและเพิ่มบางส่วนของมันเอง WSAECONNABORTED เป็นรหัสข้อผิดพลาด Winsock ดังนั้นอาจไม่มีคำอธิบายของ Berkeley สถานการณ์ที่อธิบายเกี่ยวกับเซิร์ฟเวอร์ HTTP จะสร้าง ECONNRESET ไม่ใช่ WSAECONNABORTED
มาร์ควิสแห่ง Lorne

@EJP ฉันยังได้รับข้อยกเว้นนี้ในขณะที่ส่ง / เขียน (outs.write (audioBytes);) byte [] ใน OutputStream เมื่อเสียงกำลังคลี่คลายและในขณะที่เล่นถ้าผู้ใช้คลิกที่เมนูอื่น ๆ (ซึ่งส่งคำขอเซิร์ฟเวอร์) ฉันได้รับข้อผิดพลาดเดียวกันบนคอนโซล ดังนั้นจะปลอดภัยหรือไม่ที่จะละเว้นข้อยกเว้นนี้
Amogh

1
@rustyx แหล่งที่มาทั้งสามอ้างถึงที่นี่ว่าผลิตโดยความล้มเหลว ACK หากคุณมีแหล่งข้อมูลสำหรับการอ้างสิทธิ์ของคุณเองโปรดอ้างอิง
มาร์ควิสแห่ง Lorne

2
นี่ไม่ใช่คำตอบที่แท้จริงเนื่องจากไม่ได้ให้ข้อมูลกับคุณในการติดตามปัญหาเพิ่มเติม คำตอบที่นี่นั้นเป็น "สิ่งที่ไม่ดีเกิดขึ้นในเครือข่าย" มันจะมีประโยชน์จริง ๆ ที่จะเข้าใจว่าบันทึกเพิ่มเติมและบันทึกกิจกรรมอื่น ๆ จะทำให้ฉันสามารถระบุปัญหาพื้นฐานได้
Derek Bennett

11

java.net.SocketExceptionจะถูกโยนทิ้งเมื่อมีข้อผิดพลาดในการสร้างหรือการเข้าถึงซ็อกเก็ต (เช่นTCP ) สิ่งนี้มักจะเกิดขึ้นเมื่อเซิร์ฟเวอร์ยุติการเชื่อมต่อ (โดยไม่ต้องปิดอย่างถูกต้อง) ดังนั้นก่อนที่จะได้รับการตอบสนองอย่างเต็มที่ ในกรณีส่วนใหญ่ปัญหานี้อาจเกิดจากปัญหาการหมดเวลา (เช่นการตอบสนองใช้เวลามากเกินไปหรือเซิร์ฟเวอร์มีการร้องขอมากเกินไป) หรือไคลเอนต์ส่ง SYN แต่ไม่ได้รับ ACK (การรับรู้การยกเลิกการเชื่อมต่อ) . สำหรับปัญหาการหมดเวลาคุณสามารถพิจารณาเพิ่มค่าการหมดเวลา

ข้อยกเว้นซ็อกเก็ตมักจะมาพร้อมกับข้อความรายละเอียดที่ระบุเกี่ยวกับปัญหา

ตัวอย่างของข้อความโดยละเอียด:

  • ซอฟต์แวร์ทำให้เกิดการยกเลิกการเชื่อมต่อ: recv ล้มเหลว

    ข้อผิดพลาดระบุถึงความพยายามในการส่งข้อความและเซิร์ฟเวอร์ของคุณถูกยกเลิกการเชื่อมต่อ ถ้าเรื่องนี้เกิดขึ้นขณะที่เชื่อมต่อไปยังฐานข้อมูลนี้สามารถที่เกี่ยวข้องกับการใช้เข้ากันไม่ได้คนขับ Connector / J JDBC

    ทางออกที่เป็นไปได้: ตรวจสอบให้แน่ใจว่าคุณมีไลบรารี / ไดรเวอร์ที่เหมาะสมใน CLASSPATH ของคุณ

  • ซอฟต์แวร์ทำให้เกิดการยกเลิกการเชื่อมต่อ: เชื่อมต่อ

    สิ่งนี้สามารถเกิดขึ้นได้เมื่อมีปัญหาในการเชื่อมต่อกับรีโมต ยกตัวอย่างเช่นเนื่องจากไวรัสตัวตรวจสอบการปฏิเสธการร้องขออีเมลระยะไกล

    วิธีแก้ไขที่เป็นไปได้: ตรวจสอบบริการสแกนไวรัสไม่ว่าจะปิดกั้นพอร์ตสำหรับคำขอขาออกสำหรับการเชื่อมต่อ

  • ซอฟต์แวร์ทำให้เกิดการยกเลิกการเชื่อมต่อ: ข้อผิดพลาดในการเขียนซ็อกเก็ต

    วิธีแก้ปัญหาที่เป็นไปได้: ตรวจสอบให้แน่ใจว่าคุณเขียนความยาวไบต์ที่ถูกต้องไปยังสตรีม ตรวจสอบอีกครั้งว่าคุณกำลังส่งอะไร ดูกระทู้นี้

  • การเชื่อมต่อถูกรีเซ็ตโดยเพียร์: ข้อผิดพลาดในการเขียนซ็อกเก็ต / การเชื่อมต่อถูกยกเลิกโดยเพียร์: ข้อผิดพลาดในการเขียนซ็อกเก็ต

    แอปพลิเคชันไม่ได้ตรวจสอบว่าการเชื่อมต่อแบบ keep-alive หมดเวลาที่ฝั่งเซิร์ฟเวอร์

    วิธีแก้ไขที่เป็นไปได้: ตรวจสอบให้แน่ใจว่า HttpClient นั้นไม่ใช่ค่าว่างก่อนอ่านจากการเชื่อมต่อ E13222_01

  • การเชื่อมต่อรีเซ็ตโดยเพียร์

    การเชื่อมต่อถูกยกเลิกโดยเพียร์ (เซิร์ฟเวอร์)

  • รีเซ็ตการเชื่อมต่อ

    การเชื่อมต่อถูกยกเลิกโดยลูกค้าหรือปิดโดยเซิร์ฟเวอร์ในตอนท้ายของการเชื่อมต่อเนื่องจากมีการร้องขอพร้อมคำขอ

    ดู: สาเหตุใดที่ทำให้ java.net.SocketException ของฉัน: รีเซ็ตการเชื่อมต่อ


มีเพียงหนึ่งใน 6 คะแนนที่ตอบคำถามอย่างไม่ถูกต้อง อีกหลายคนไม่ถูกต้องเช่นกัน แอปพลิเคชันไม่สามารถ 'ตรวจสอบว่าการเชื่อมต่อแบบ keep-alive หมดเวลาที่ฝั่งเซิร์ฟเวอร์หรือไม่' HttpClientเป็นอยู่ไม่อาจก่อให้เกิดความnull SocketExceptionการไม่เขียนความยาวที่ถูกต้องลงในสตรีมก็ไม่ได้เกิด
มาร์ควิสแห่ง Lorne

9

ฉันเห็นสิ่งนี้บ่อยที่สุดเมื่อไฟร์วอลล์ขององค์กรบนเวิร์กสเตชัน / แล็ปท็อปเข้ามาขวางกั้นการเชื่อมต่อ

เช่น. ฉันมีกระบวนการเซิร์ฟเวอร์และกระบวนการไคลเอนต์ในเครื่องเดียวกัน เซิร์ฟเวอร์กำลังฟังบนอินเทอร์เฟซทั้งหมด (0.0.0.0) และไคลเอนต์พยายามเชื่อมต่อกับอินเทอร์เฟซสาธารณะ / บ้าน (หมายเหตุไม่ใช่อินเทอร์เฟซแบบวนรอบ 127.0.0.1)

หากเครื่องถูกตัดการเชื่อมต่อเครือข่าย (เช่นปิด wifi) การเชื่อมต่อจะเกิดขึ้น หากเครื่องเชื่อมต่อกับเครือข่ายองค์กร (โดยตรงหรือ vpn) การเชื่อมต่อจะเกิดขึ้น

อย่างไรก็ตามหากเครื่องเชื่อมต่อกับ wifi สาธารณะ (หรือเครือข่ายในบ้าน) ไฟร์วอลล์จะเริ่มทำการเชื่อมต่อ ในสถานการณ์นี้การเชื่อมต่อไคลเอนต์กับอินเทอร์เฟซแบบวนกลับทำงานได้ดีไม่เพียงแค่ไปยังอินเทอร์เฟซสำหรับบ้าน / สาธารณะ

หวังว่านี่จะช่วยได้


3
ไฟร์วอลล์ป้องกันการเชื่อมต่อ คำถามเกี่ยวกับการรีเซ็ตการเชื่อมต่อที่มีอยู่
มาร์ควิสแห่ง Lorne

4

เพื่อพิสูจน์ว่าองค์ประกอบใดที่ล้มเหลวฉันจะตรวจสอบการสื่อสาร TCP / IP โดยใช้wiresharkและดูว่าใครกำลังปิดพอร์ตนั้นและหมดเวลาด้วย


ไม่มีใครปิดพอร์ต ระบบปฏิบัติการกำลังยกเลิกการเชื่อมต่อ
มาร์ควิสแห่งลอร์น

@EJP ฉันเคยเห็นสิ่งนี้เกิดขึ้นเมื่อการโอเวอร์โหลดและหน่วยความจำไม่เพียงพอ ฉันไม่แน่ใจว่าเป็นระบบปฏิบัติการที่ปิดการเชื่อมต่อ แต่ JVM กลับมาใช้งานได้อีกครั้ง
Zee

1
@Zee มีความแตกต่างระหว่างการปิดพอร์ตซึ่งปรากฏเป็น FIN ใน Wireshark และยกเลิกการเชื่อมต่อซึ่งไม่ใช่
มาร์ควิสแห่ง Lorne

2

คุณได้ตรวจสอบซอร์สโค้ด Tomcat และ JVM แล้วหรือยัง? ที่อาจช่วยคุณได้มากขึ้น

ฉันคิดว่าความคิดทั่วไปของคุณดี ฉันคาดหวังว่าConnectExceptionในสถานการณ์ที่คุณไม่สามารถเชื่อมต่อได้ ด้านบนมีลักษณะคล้ายกับลูกค้าเป็นตัวขับเคลื่อน


3
ใช่ฉันตรวจสอบแล้ว แหล่งที่มาของ Tomcat ไม่ได้มีการเปลี่ยนแปลงประโยคใด ๆ ขอบคุณ
Eran Medan

1
ไม่เขาไม่ได้ตรวจสอบแหล่ง Tomcat และแหล่ง JVM
สตีเฟ่นซี

หรือถ้าเขาตรวจสอบแหล่งข้อมูล JVM เขาไม่ได้ตรวจสอบทั้งหมด
สตีเฟ่นซี

1
@Ehrann - สตริงข้อความมีแนวโน้มมากที่สุดในแหล่งดั้งเดิม แต่คุณควรตรวจสอบบันทึกเหตุการณ์ IMO หลังมีแนวโน้มที่จะให้ข้อมูลเพิ่มเติม
สตีเฟ่นซี

6
สตริงข้อความนี้มาจากระบบปฏิบัติการจริง
มาร์ควิสแห่ง Lorne

2

สำหรับทุกคนที่ใช้โปรแกรมไคลเอนต์เซิร์ฟเวอร์อย่างง่ายและได้รับข้อผิดพลาดนี้มันเป็นปัญหาของ unclosed (หรือปิดไปก่อนหน้า) อินพุตหรือเอาต์พุตสตรีม


2
ไม่มันไม่ใช่ นั่นจะทำให้การรั่วไหลของซ็อกเก็ตซึ่งในที่สุดจะทำให้เกิดการอ่อนเพลีย FD
มาร์ควิสแห่ง Lorne

0

ฉันกำลังเผชิญกับปัญหาเดียวกัน
โดยทั่วไปข้อผิดพลาดประเภทนี้เกิดขึ้นเนื่องจากไคลเอนต์ได้ปิดการเชื่อมต่อและเซิร์ฟเวอร์ยังคงพยายามเขียนลงบนไคลเอนต์นั้น
ดังนั้นตรวจสอบให้แน่ใจว่าไคลเอนต์ของคุณมีการเชื่อมต่อเปิดจนกว่าเซิร์ฟเวอร์จะเสร็จสิ้นด้วยเอาต์พุตสตรีม
และอีกอย่างอย่าลืมปิดอินพุตและเอาต์พุตสตรีม

หวังว่านี่จะช่วยได้
และหากยังคงประสบปัญหามากกว่าสรุปปัญหาของคุณที่นี่ในรายละเอียด


3
@BhavinChhatrola ไม่คำตอบที่ไม่ถูกต้อง สถานการณ์ที่อธิบายสร้าง 'การเชื่อมต่อรีเซ็ตโดยเพียร์' ไม่ใช่ข้อผิดพลาดในคำถาม
มาร์ควิสแห่ง Lorne

0

ข้อผิดพลาดนี้เกิดขึ้นกับฉันในขณะที่กำลังทดสอบบริการสบู่กับลูกค้า SoapUI โดยทั่วไปฉันพยายามรับข้อความที่มีขนาดใหญ่มาก (> 500kb) และ SoapUI ปิดการเชื่อมต่อโดยหมดเวลา

ใน SoapUI ไปที่:

ไฟล์ -> การตั้งค่า - การหมดเวลาของซ็อกเก็ต (ms)

... และใส่ค่าที่มีขนาดใหญ่เช่น 180000 (3 นาที) สิ่งนี้จะไม่เป็นการแก้ไขที่สมบูรณ์แบบสำหรับปัญหาของคุณเพราะไฟล์นั้นใหญ่จริง แต่อย่างน้อยคุณจะได้รับการตอบกลับ


0

ปิดการเชื่อมต่อในไคลเอนต์อื่น

ในกรณีของฉันข้อผิดพลาดคือ:

java.net.SocketException: Software caused connection abort: recv failed

ได้รับใน eclipse ขณะทำการดีบักแอ็พพลิเคชัน java ที่เข้าถึงฐานข้อมูล H2 สาเหตุของข้อผิดพลาดคือตอนแรกฉันเปิดฐานข้อมูลด้วย SQuirreL เพื่อตรวจสอบความสมบูรณ์ด้วยตนเอง ฉันใช้การตั้งค่าสถานะเพื่อเปิดใช้งานการเชื่อมต่อหลายรายการไปยังฐานข้อมูลเดียวกัน (เช่นAUTO_SERVER=TRUE) ดังนั้นจึงไม่มีปัญหาในการเชื่อมต่อกับฐานข้อมูลจาก java

ข้อผิดพลาดปรากฏขึ้นเมื่อผ่านไปครู่หนึ่ง - มันเป็นกระบวนการ java ที่ยาวนาน - ฉันตัดสินใจปิด SQuirreL เพื่อเพิ่มทรัพยากร ดูเหมือนว่า SQuirreL นั้นเป็น "เจ้าของ" อินสแตนซ์ของเซิร์ฟเวอร์ DB และถูกปิดด้วยการเชื่อมต่อ SQuirreL

การรีสตาร์ทแอ็พพลิเคชัน Java ไม่ได้ทำให้เกิดข้อผิดพลาดอีกครั้ง

การตั้งค่า

  • วินโดว 7
  • Eclipse Kepler
  • SQuirreL 3.6
  • org.h2.Driver ver 1.4.192

0

ในกรณีของฉันฉันพัฒนาลูกค้าและฝั่งเซิร์ฟเวอร์และฉันมีข้อยกเว้น:

สาเหตุ: ข้อโต้แย้งการเรียงลำดับข้อผิดพลาด; ข้อยกเว้นแบบซ้อนคือ: java.net.SocketException: ซอฟต์แวร์ทำให้เกิดการยกเลิกการเชื่อมต่อ: ข้อผิดพลาดการเขียนซ็อกเก็ต

เมื่อคลาสในไคลเอนต์และเซิร์ฟเวอร์ต่างกัน ฉันไม่ดาวน์โหลดคลาสของเซิร์ฟเวอร์ (อินเตอร์เฟส) บนไคลเอนต์ฉันเพิ่งเพิ่มไฟล์เดียวกันในโครงการ แต่เส้นทางจะต้องเหมือนกันทุกประการ ตัวอย่างเช่นในโครงการเซิร์ฟเวอร์ฉันมีแพคเกจ java \ rmi \ services พร้อม ServiceInterface และการใช้งานบางอย่างฉันต้องสร้างแพ็คเกจเดียวกันในโครงการไคลเอนต์ หากฉันเปลี่ยนโดยใช้ java / rmi / server / services เช่นฉันได้รับข้อยกเว้นข้างต้น ข้อยกเว้นเดียวกันถ้าเวอร์ชันอินเทอร์เฟซแตกต่างกันระหว่างไคลเอนต์และเซิร์ฟเวอร์ (แม้จะมีแถวว่างที่เพิ่มเข้ามาโดยไม่ได้ตั้งใจ ... ฉันคิดว่า rmi ทำให้แฮชของคลาสเพื่อตรวจสอบรุ่น ... ฉันไม่รู้ ... ถ้าทำได้ ช่วยด้วย ...


-1

เซิร์ฟเวอร์ของฉันส่งข้อยกเว้นนี้ในช่วง 2 วันที่ผ่านมาและฉันแก้ไขได้โดยการย้ายฟังก์ชั่นตัดการเชื่อมต่อด้วย:

outputStream.close();
inputStream.close();
Client.close();

ไปยังจุดสิ้นสุดของรายการกระทู้ ถ้ามันจะช่วยให้ทุกคน


-1

ในสถานการณ์ที่อธิบายไว้ด้านล่างฝั่งไคลเอ็นต์จะโยนข้อยกเว้นดังกล่าว:

เซิร์ฟเวอร์ขอให้ตรวจสอบใบรับรองไคลเอ็นต์ แต่ลูกค้าให้ใบรับรองที่ Extended Key Usage ไม่รองรับการตรวจสอบสิทธิ์ลูกค้าดังนั้นเซิร์ฟเวอร์ไม่ยอมรับใบรับรองของลูกค้าแล้วปิดการเชื่อมต่อ


คำตอบนี้ไม่ถูกต้อง ในกรณีที่คุณอธิบาย SSLException จะถูกโยนทิ้ง
ประธานาธิบดี James K. Polk

จริง ๆ แล้วมันโยน SocketException เหมือนกับคำถามปัจจุบันฉันได้ทดสอบแล้ว
xiaoming

-1

ฝั่งไคลเอ็นต์ ssl จะส่งข้อยกเว้นดังกล่าวในสถานการณ์ด้านล่าง (ฉันได้ทดสอบแล้ว):

เซิร์ฟเวอร์ขอให้ตรวจสอบใบรับรองไคลเอ็นต์ แต่ลูกค้าให้ใบรับรองที่ Extended Key Usage donot สนับสนุนลูกค้ารับรองความถูกต้อง


-3

ฉันกำลังเผชิญปัญหาเดียวกันกับ wireMock ในขณะที่ล้อเลียนการเรียก API ส่วนที่เหลือ ก่อนหน้านี้ฉันกำหนดเซิร์ฟเวอร์เช่นนี้:

WireMockServer wireMockServer = null;

แต่ควรกำหนดเช่นเดียวกับที่แสดงด้านล่าง:

@Rule 
public WireMockRule wireMockRule = new WireMockRule(8089);

นั่นจะทำให้NullPointerExceptionไม่ใช่ปัญหานี้
มาร์ควิสแห่ง Lorne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.