ภาษาอังกฤษอาหารฝรั่งเศสสเปน

ไอคอน Fav ของ OnWorks

clirr - ออนไลน์ในคลาวด์

เรียกใช้ clirr ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง clirr ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


clirr - ตรวจสอบความเข้ากันได้ของซอร์สและไบนารีของไลบรารี Java

เรื่องย่อ


คลิ -o โถเก่า -n นิวจาร์ [ตัวเลือก]

DESCRIPTION


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

OPTIONS


-a, --show-all-ขอบเขต

แสดงคลาสส่วนตัวและแพ็คเกจ

-f, --output-ไฟล์

ชื่อไฟล์เอาต์พุต

-i, --รวม-pkg

รวมเฉพาะคลาสจากแพ็คเกจนี้และแพ็คเกจย่อย

-n, --เวอร์ชั่นใหม่

ไฟล์ jar ของเวอร์ชันใหม่

-ncp, --คลาสพาธใหม่

classpath บุคคลที่สามที่อ้างอิงโดย new-version

-o, --เวอร์ชั่นเก่า

ไฟล์ jar ของเวอร์ชันเก่า

-ต.ค, --orig-คลาสพาธ

classpath บุคคลที่สามที่อ้างอิงโดย old-version

-p, --show-pkg-ขอบเขต

แสดงคลาสขอบเขตแพ็คเกจ

-s, --สไตล์ [ข้อความ|xml]

สไตล์การส่งออก

ข้อความ


เมื่อ clirr สร้างข้อความข้อผิดพลาด คำเตือน หรือ INFO เกี่ยวกับการเปลี่ยนแปลงในขวดโหลที่กำลัง
เปรียบเทียบมีรหัสอ้างอิงข้อความที่เกี่ยวข้อง คู่มือนี้ประกอบด้วย an
คำอธิบายความหมายของข้อความนั้นซึ่งอาจประกอบด้วยข้อมูลที่ไม่สามารถ
ให้พอดีกับข้อความสรุปสั้นๆ

ข้อความจะถูกแบ่งออกเป็นสามระดับความรุนแรง: ข้อผิดพลาด คำเตือน และข้อมูล

ข้อผิดพลาดมาในสองรสชาติ:

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

ความล้มเหลวรันไทม์ ซึ่งจะมีข้อยกเว้นเมื่อคอมไพล์โค้ดกับ old
เวอร์ชันของคลาสพยายามเรียกใช้เมธอดในเวอร์ชันใหม่ของคลาส หรือ vice
ในทางกลับกัน

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

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

ข้อความข้อมูลให้ข้อมูลเกี่ยวกับคุณสมบัติใหม่แก่ผู้ใช้ที่ได้รับ
เพิ่มโดยไม่ทำลายความเข้ากันได้ย้อนหลัง แต่อย่างใด

เมื่อใช้ clirr เพื่อรายงานการเปลี่ยนแปลงรายการที่มีขอบเขตส่วนตัวหรือแพ็คเกจ สิ่งเหล่านี้
การเปลี่ยนแปลงจะถูกรายงานเป็นการเปลี่ยนแปลงระดับ INFO ไม่เคยระดับคำเตือนหรือข้อผิดพลาด นี้
อนุญาตให้ผู้ใช้ clirr สร้าง "รายงานการเปลี่ยนแปลง" ในระดับที่เหมาะสมสำหรับนักพัฒนา
โดยไม่มีการเปลี่ยนแปลงบางอย่างที่ทำเครื่องหมาย (ไม่เกี่ยวข้อง) ว่าเป็นความไม่ลงรอยกันของไบนารี

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

Clirr ไม่รายงานความไม่ลงรอยกันของไบนารี คำเตือนหรือข้อผิดพลาดสำหรับรายการที่อยู่ในขอบเขตของแพ็คเกจ
เนื่องจากแพ็คเกจ Java มีวัตถุประสงค์เพื่อเป็น "หน่วยการวางจำหน่าย" เช่นคลาสทั้งหมดภายใน
แพ็คเกจถูกคอมไพล์เข้าด้วยกัน (รับรองความเข้ากันได้) จากนั้นปล่อยเป็นหน่วย เพียง
เวลาที่ความไม่เข้ากันของขอบเขตแพ็คเกจอาจเป็นปัญหาเมื่อผู้ใช้a
ห้องสมุดเขียนคลาสของตัวเองโดยใช้การประกาศแพ็คเกจที่เป็นของภายนอก
ไลบรารี่ หรือเมื่อใช้ชุดย่อยของคลาสที่อัพเดต (เช่น คลาสเดียว) จากแพ็คเกจ
เพื่อแทนที่บางคลาสจากไลบรารีรุ่นก่อนหน้า ทั้งสองอย่าง
สถานการณ์ถือเป็นแนวทางปฏิบัติที่แย่มากตามแบบแผนการเขียนโปรแกรม Java

ในส่วนต่อไปนี้ คำว่า "เก่า" ใช้เพื่ออ้างถึงคลาส อินเตอร์เฟส เมธอด
หรือฟิลด์จากชุดของไหที่แสดงถึงเวอร์ชันเก่า/ก่อนหน้า/เดิม/พื้นฐาน
ของห้องสมุดที่กำลังตรวจสอบ คำว่า "ใหม่" ใช้เพื่ออ้างถึงคลาส ส่วนต่อประสาน
เมธอดหรือฟิลด์จากชุดของไหซึ่งแสดงถึงเวอร์ชันใหม่/ปัจจุบัน/ล่าสุดของ
กำลังตรวจสอบห้องสมุด

ในส่วนต่อไปนี้ คำว่า "ประเภท" ใช้เพื่ออ้างถึงบางสิ่งที่อาจ
ไม่ว่าจะเป็นคลาสหรืออินเทอร์เฟซ

1000 - เพิ่มขึ้น ความชัดเจน of ชั้น

ความรุนแรง: INFO

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

ประเภทระดับบนสุด (เช่นประเภทที่ไม่ซ้อนกันภายในคลาสอื่น) อาจมีเพียง
การเข้าถึง "แพ็คเกจ" หรือ "สาธารณะ" ประเภทที่ซ้อนกันสามารถรับได้กับสี่
ค่าการช่วยสำหรับการเข้าถึงที่พร้อมใช้งาน

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

โปรดทราบว่าการประกาศ "มีการป้องกัน" ให้การเข้าถึงรหัสทั้งสองที่ได้มาจาก
พิมพ์และรหัสภายในแพ็คเกจเดียวกันเช่นการเข้าถึง "ที่มีการป้องกัน" ก็หมายถึง
การเข้าถึงแพ็คเกจ

1001 - ความต้องการทางเพศ ความชัดเจน of ชั้น

ความรุนแรง: ERROR

มีประเภทที่ระบุอยู่ในทั้งสองเวอร์ชัน แต่ตัวระบุการเข้าถึงที่ประกาศมี
เปลี่ยนเพื่อกระชับข้อจำกัดเกี่ยวกับสิ่งที่รหัสอื่นอาจเข้าถึงได้

ประเภทระดับบนสุด (เช่นประเภทที่ไม่ซ้อนกันภายในคลาสอื่น) อาจมีเพียง
การเข้าถึง "แพ็คเกจ" หรือ "สาธารณะ" ประเภทที่ซ้อนกันสามารถรับได้กับสี่
ค่าการช่วยสำหรับการเข้าถึงที่พร้อมใช้งาน

ไม่ว่าประเภทจะอยู่ในระดับบนสุดหรือซ้อนกัน การเปลี่ยนแปลงในการช่วยสำหรับการเข้าถึง
จากซ้ายไปขวาของลำดับ public->protected->package->private may cause
รหัสที่มีอยู่ซึ่งก่อนหน้านี้สามารถเข้าถึงประเภทที่ไม่สามารถทำได้อีกต่อไป

ส่วนที่ 13.4.3 ของข้อกำหนดภาษา Java ระบุไว้อย่างชัดเจนว่า an
IllegalAccessError ควรเกิดขึ้นหากไบนารีที่มีอยู่ก่อนพยายามเข้าถึง type
เมื่อการช่วยสำหรับการเข้าถึงประเภทถูกเปลี่ยนเป็นสิ่งที่จะทำให้
ข้อผิดพลาดในการคอมไพล์ อย่างไรก็ตามสิ่งนี้ดูเหมือนจะไม่มีผลบังคับใช้ในทางปฏิบัติที่
น้อยที่สุดใน JVM ปัจจุบัน อย่างไรก็ตาม นี่ควรจะเป็นข้อผิดพลาด ดังนั้น clirr รายงาน
การเปลี่ยนแปลงนี้เป็นข้อผิดพลาดที่เข้ากันได้กับไบนารี

2000 - เปลี่ยน เริ่มต้น ชั้น ไปยัง อินเตอร์เฟซ

ความรุนแรง: ERROR

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

2001 - เปลี่ยน เริ่มต้น อินเตอร์เฟซ ไปยัง ชั้น

ความรุนแรง: ERROR

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

3001 - ลบออก สุดท้าย เปลี่ยนแปลง เริ่มต้น ชั้น

ความรุนแรง: INFO

คลาสที่ระบุได้รับการประกาศเป็นครั้งสุดท้ายในเวอร์ชันเก่า แต่จะไม่สิ้นสุดอีกต่อไป
ในเวอร์ชันใหม่

3002 - ที่เพิ่ม สุดท้าย เปลี่ยนแปลง ไปยัง มีประสิทธิภาพ สุดท้าย ชั้น

ความรุนแรง: INFO

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

3003 - ที่เพิ่ม สุดท้าย เปลี่ยนแปลง ไปยัง ชั้น

ความรุนแรง: ERROR

คลาสที่ระบุไม่ได้ประกาศเป็นครั้งสุดท้ายในเวอร์ชันเก่า แต่ตอนนี้ประกาศแล้ว
สุดท้าย. คลาสที่มีอยู่ก่อนซึ่งถูกประกาศเป็นคลาสย่อยของคลาสนี้
จึงไม่มีผลกับไลบรารีเวอร์ชันใหม่

VerifyError ถูกส่งโดย classloader เมื่อมีการพยายามโหลด a
คลาสย่อยของคลาสสุดท้าย

โปรดทราบว่าคลาส Y ถูกโหลดโดย classloader มาตรฐานเฉพาะเมื่อ first
พยายามสร้างอินสแตนซ์ของ Y หรืออ้างอิง Class . โดยตรง
วัตถุสำหรับคลาส Y หากคลาส X อื่นมีคลาส Y เป็นสมาชิกที่ประกาศหรือเป็น a
พารามิเตอร์บางวิธี จากนั้นการโหลดคลาส X จะไม่ทำให้โหลดคลาส Y

3004 - ลบออก นามธรรม เปลี่ยนแปลง เริ่มต้น ชั้น

ความรุนแรง: INFO

เวอร์ชันเก่าของคลาสนี้ได้รับการประกาศให้เป็นคลาสนามธรรม รุ่นใหม่
ไม่เป็นนามธรรม ทำให้ผู้ใช้สามารถสร้างอินสแตนซ์ของคลาสได้

3005 - ที่เพิ่ม นามธรรม เปลี่ยนแปลง ไปยัง ชั้น

ความรุนแรง: ERROR

เวอร์ชันเก่าของคลาสนี้ไม่ได้รับการประกาศให้เป็นนามธรรม เวอร์ชันใหม่คือ
บทคัดย่อ. รหัสที่มีอยู่ก่อนซึ่งสร้างอินสแตนซ์ของคลาสนี้ไม่มีอีกต่อไป
ใช้ได้กับเวอร์ชันใหม่

4000 - ที่เพิ่ม อินเตอร์เฟซ ไปยัง ชุด of การดำเนินการ อินเตอร์เฟซ

ความรุนแรง: INFO

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

โปรดทราบว่าข้อความนี้สามารถรายงานได้โดยไม่มีการเปลี่ยนแปลงใดๆ เกิดขึ้นใน
ประเภทที่ระบุ; การเปลี่ยนชุดของอินเทอร์เฟซที่รองรับโดยประเภทจะทำให้
ข้อความนี้จะถูกรายงานสำหรับทายาททุกคนในประเภทนั้น

4001 - ลบออก อินเตอร์เฟซ เริ่มต้น ชุด of การดำเนินการ อินเตอร์เฟซ

ความรุนแรง: ERROR

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

โปรดทราบว่าข้อความนี้สามารถรายงานได้โดยไม่มีการเปลี่ยนแปลงใดๆ เกิดขึ้นใน
ประเภทที่ระบุ; การเปลี่ยนชุดของอินเทอร์เฟซที่รองรับโดยประเภทจะทำให้
ข้อความนี้จะถูกรายงานสำหรับทายาททุกคนในประเภทนั้น

5000 - ที่เพิ่ม ชั้น ไปยัง ชุด of ซุปเปอร์คลาส

ความรุนแรง: ข้อมูลหรือคำเตือน

เวอร์ชันใหม่ของคลาสมีคลาสในลำดับชั้นการสืบทอดซึ่งตัวเก่า
เวอร์ชันไม่ได้เพราะว่าพาเรนต์โดยตรงเป็นคลาสอื่นหรือ
เพราะหนึ่งในคลาสหลักได้เปลี่ยนลำดับชั้นการสืบทอด

หากคลาสที่ระบุมี java.lang.Throwable เป็นบรรพบุรุษ การเปลี่ยนแปลงนี้คือ
รายงานเป็นคำเตือนเนื่องจากการเปลี่ยนแปลงคลาสนี้อาจเปลี่ยนข้อยกเว้นที่จับได้
พฤติกรรมของโปรแกรมที่ใช้คลาสนี้

โปรดทราบว่าข้อความนี้สามารถรายงานได้โดยไม่มีการเปลี่ยนแปลงใดๆ เกิดขึ้นใน
คลาสที่ระบุ; การเปลี่ยนแปลงชุดของ superclasses ของคลาสบรรพบุรุษ will
ทำให้ข้อความนี้ถูกรายงานสำหรับทายาททุกคลาส

5001 - ลบออก ชั้น เริ่มต้น ชุด of ซุปเปอร์คลาส

ความรุนแรง: ERROR

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

รหัสที่มีอยู่ซึ่งส่งวัตถุประเภทนี้ไปยังตอนนี้โดยชัดแจ้งหรือโดยปริยาย
ประเภทคลาสที่ขาดหายไปจะใช้ไม่ได้อีกต่อไป

โปรดทราบว่าข้อความนี้สามารถรายงานได้โดยไม่มีการเปลี่ยนแปลงใดๆ เกิดขึ้นใน
คลาสที่ระบุ; การเปลี่ยนแปลงชุดของ superclasses ของคลาสบรรพบุรุษ will
ทำให้ข้อความนี้ถูกรายงานสำหรับคลาสที่สืบทอดมาทุกคลาส

สังเกตด้วยว่าถ้าคลาสนี้มี Throwable ในบรรพบุรุษแล้ว class
การเปลี่ยนแปลงลำดับชั้นยังสามารถทำให้เกิดการเปลี่ยนแปลงในพฤติกรรมจับข้อยกเว้นของ
โปรแกรมที่ใช้คลาสนี้

6000 - ที่เพิ่ม สนาม

ความรุนแรง: INFO

คลาสใหม่มีสมาชิกสแตติกหรืออินสแตนซ์เพิ่มเติม การเปลี่ยนแปลงนี้คือ
เข้ากันได้อย่างสมบูรณ์ย้อนหลัง

6001 - ลบออก สนาม

ความรุนแรง: ERROR

คลาสใหม่ได้ลบฟิลด์ที่มีอยู่ในเวอร์ชันเก่า รหัสที่มีอยู่ก่อน
ซึ่งเข้าถึงฟิลด์นั้นโดยตรงจะไม่สามารถใช้งานได้อีกต่อไป

6002 - ความคุ้มค่า of สนาม ไม่ อีกต่อไป a เวลารวบรวม คงที่

ความรุนแรง: คำเตือน

รหัสที่รวบรวมกับรุ่นเก่าของคลาสได้รับอนุญาตให้ "อินไลน์" the
ค่าของฟิลด์นี้เพราะเป็นค่าคงที่เวลาคอมไพล์ ดังนั้น ที่มีอยู่
รหัสไบนารีจะยังคงใช้ค่าเดิมของฟิลด์นี้ แทน new
ค่า (ซึ่งไม่สามารถแทรกได้)

6003 - ความคุ้มค่า of เวลารวบรวม คงที่ มี การเปลี่ยนแปลง

ความรุนแรง: คำเตือน

รหัสที่รวบรวมกับรุ่นเก่าของคลาสได้รับอนุญาตให้ "อินไลน์" the
ค่าของฟิลด์นี้เพราะเป็นค่าคงที่เวลาคอมไพล์ ดังนั้น ที่มีอยู่
รหัสไบนารีจะยังคงใช้ค่าเดิมของฟิลด์นี้ แทน new
มูลค่า

6004 - สนาม ชนิด การเปลี่ยนแปลง

ความรุนแรง: ERROR

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

6005 - สนาม ตอนนี้ รอบชิงชนะเลิศ

ความรุนแรง: INFO

สนามนี้เคยเป็นที่สิ้นสุด และไม่เป็นที่สิ้นสุดอีกต่อไป ซึ่งหมายความว่าสนาม
ค่านี้สามารถแก้ไขได้ตลอดอายุของคลาสหรืออินสแตนซ์

ค่าในฟิลด์ก่อนหน้านี้สามารถ "inline" ในคลาสอื่นได้หรือไม่คือ an
ปัญหาได้รับการแก้ไขโดยข้อความ 6002 และ 6003 ไม่ใช่ข้อความนี้

6006 - สนาม ตอนนี้ สุดท้าย

ความรุนแรง: ERROR

แก้ไขฟิลด์นี้ไม่ได้อีกต่อไปในช่วงอายุของคลาสหรืออินสแตนซ์
รหัสที่แก้ไขก่อนหน้านี้ฟิลด์นี้จึงใช้ไม่ได้อีกต่อไป

6007 - สนาม ตอนนี้ ไม่คงที่

ความรุนแรง: ERROR

ฟิลด์นี้เป็นตัวแปรอินสแตนซ์แทนที่จะเป็นตัวแปรคลาส รหัสซึ่ง
ก่อนหน้านี้เข้าถึงฟิลด์นี้ผ่านคลาสแทนที่จะเป็นอินสแตนซ์ของคลาส
จะใช้ไม่ได้อีกต่อไป

6008 - สนาม ตอนนี้ คงที่

ความรุนแรง: ERROR

ฟิลด์นี้เป็นตัวแปรคลาสแทนที่จะเป็นตัวแปรอินสแตนซ์

ด้วยเหตุผลบางอย่าง (น่าจะเป็นปัญหาการใช้งานภายใน) Java standard
ประกาศว่าการเปลี่ยนแปลงนี้เข้ากันไม่ได้กับไบนารีและว่า an
IncompatibleClassChangeError จะถูกส่งออกไปหากโค้ดที่คอมไพล์กับ "เก่า"
เวอร์ชันของคลาสใช้ร่วมกับเวอร์ชัน "ใหม่" ซึ่งปัจจุบันเป็นฟิลด์
คงที่.

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

6009 - สนาม เพิ่มเติม ที่สามารถเข้าถึงได้

ความรุนแรง: INFO

ในเวอร์ชันใหม่ ฟิลด์ที่ระบุสามารถเข้าถึงโค้ดได้มากกว่าเดิม
ก่อนหน้านี้

6010 - สนาม น้อยกว่า ที่สามารถเข้าถึงได้

ความรุนแรง: ERROR

ในเวอร์ชันใหม่ ฟิลด์ที่ระบุสามารถเข้าถึงโค้ดได้น้อยกว่าที่เป็นอยู่
ก่อนหน้านี้. ดังนั้นรหัสที่มีอยู่อาจใช้ไม่ได้อีกต่อไป

6011 - ลบออก ค่าคงที่ สนาม

ความรุนแรงแบบไบนารี: คำเตือน

ความรุนแรงของแหล่งที่มา: ERROR

คลาสใหม่ได้ลบฟิลด์ที่มีอยู่ในเวอร์ชันเก่า แหล่งที่มาที่มีอยู่ก่อน
รหัสที่เข้าถึงช่องนั้นโดยตรงจะใช้ไม่ได้อีกต่อไป

อย่างไรก็ตาม ก่อนหน้านี้ ฟิลด์นี้เป็นฟิลด์สุดท้ายและเริ่มต้นด้วยค่าคงที่
ดังนั้นโค้ดที่คอมไพล์เทียบกับเวอร์ชันก่อนหน้าของคลาสจะมี inline
ค่าคงที่นี้และจะทำงานต่อไปโดยใช้ค่าก่อนหน้าของฟิลด์นี้ NS
มีการออกคำเตือนเนื่องจากพฤติกรรมนี้มักไม่เป็นที่ต้องการ อย่างไรก็ตามมันไม่ใช่
ความไม่ลงรอยกันของไบนารี

7000 - วิธี ตอนนี้ in ซุปเปอร์คลาส

ความรุนแรง: INFO

คลาสเก่ามีเมธอดชื่อ X คลาสใหม่ไม่มีเมธอดนี้อีกต่อไป แต่มี a
คลาสพาเรนต์กำหนดวิธีการนี้ ดังนั้นจึงไม่มีไบนารีหรือซอร์สที่เข้ากันไม่ได้
ที่เกิดขึ้น

โปรดทราบว่าการเปลี่ยนแปลงนี้อาจส่งผลต่อการบังคับให้คลาสใหม่กลายเป็น
'บทคัดย่อ'. หากเป็นกรณีนี้ การเปลี่ยนแปลงนี้จะถูกรายงานแยกต่างหาก

7001 - วิธี ตอนนี้ in อินเตอร์เฟซ

ความรุนแรง: INFO

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

โปรดทราบว่าการเปลี่ยนแปลงนี้อาจส่งผลต่อการบังคับให้คลาสใหม่กลายเป็น
'บทคัดย่อ'. หากเป็นกรณีนี้ การเปลี่ยนแปลงนี้จะถูกรายงานแยกต่างหาก

7002 - วิธี ลบออก

ความรุนแรง: ERROR

คลาสหรืออินเตอร์เฟสเก่ามีเมธอดชื่อ X คลาสใหม่หรืออินเตอร์เฟส no
มีเมธอดนี้อีกต่อไป และเมธอดนี้ไม่ได้กำหนดไว้ในคลาสพาเรนต์ใดๆ หรือ
อินเตอร์เฟซ.

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

7003 - วิธี โอเวอร์ไซด์ ลบออก

ความรุนแรง: INFO

เมธอดที่ระบุในคลาสหรืออินเตอร์เฟสเก่ากำลังแทนที่การสืบทอด
คำนิยาม. คลาสหรืออินเทอร์เฟซใหม่ไม่มีวิธีการนี้อย่างชัดเจนอีกต่อไป
ประกาศไว้ แต่ยังคงสืบทอดคำจำกัดความดังนั้นจึงไม่มีไบนารี
ความไม่ลงรอยกัน 7004 - เปลี่ยนจำนวนอาร์กิวเมนต์ของเมธอด

ความรุนแรง: ERROR

วิธีการที่ระบุมีการเพิ่มหรือลบอาร์กิวเมนต์ ซึ่งหมายความว่ารหัสซึ่ง
ที่เรียกใช้ก่อนหน้านี้จะไม่เรียกใช้วิธีการเดียวกันอีกต่อไป

หากมีการกำหนดวิธีการสืบทอดกับต้นแบบเก่าแล้วจะไม่มี
ความไม่ลงรอยกันของไบนารี โค้ดที่คอมไพล์เทียบกับเวอร์ชันเก่าของ this
ตอนนี้คลาสจะเรียกใช้การใช้งานที่สืบทอดมา ในสถานการณ์นี้ clirr ควร
ส่งออกข้อความ INFO แทนที่จะเป็นข้อผิดพลาด อย่างไรก็ตาม ณ วันที่ปัจจุบัน clirr
ไม่ได้ตรวจสอบสถานการณ์นี้

หากไม่มีการกำหนดวิธีการสืบทอดกับต้นแบบเก่าแล้วการเปลี่ยนแปลง
คือความไม่ลงรอยกันของไบนารี

7005 - วิธี ข้อโต้แย้ง ประเภท การเปลี่ยนแปลง

ความรุนแรงแบบไบนารี: INFO หรือ ERROR

ความรุนแรงของแหล่งที่มา: ERROR

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

หากมีการกำหนดวิธีการสืบทอดกับต้นแบบเก่าแล้วจะไม่มี
ความไม่ลงรอยกันของไบนารี โค้ดที่คอมไพล์เทียบกับเวอร์ชันเก่าของ this
ตอนนี้คลาสจะเรียกใช้การใช้งานที่สืบทอดมา ณ วันที่ปัจจุบัน clirr ไม่
ไม่ตรวจสอบสถานการณ์นี้

หากไม่มีการกำหนดวิธีการสืบทอดกับต้นแบบเก่าแล้วการเปลี่ยนแปลง
คือความไม่ลงรอยกันของไบนารี

หากเปลี่ยนประเภทพารามิเตอร์ทั้งหมดเปลี่ยนเป็น supertype ของก่อนหน้า
ประเภทที่ประกาศ หรือสำหรับประเภทพารามิเตอร์ดั้งเดิม หากเปลี่ยนเป็น "ใหญ่ขึ้น"
ทุกกรณี ดังนั้นโค้ดใหม่จึงเป็นซอร์สโค้ดที่เข้ากันได้กับตัวก่อนหน้า
ปล่อยแม้ว่ามันจะไม่รองรับไบนารี โปรดทราบว่าในสถานการณ์นี้
การคอมไพล์โค้ดใหม่ที่ใช้ไลบรารีอาจเปลี่ยนพฤติกรรมจากการเรียก an
สืบทอดวิธีการเรียกวิธีการในชั้นเรียนซึ่งมีความแตกต่างกันเล็กน้อย
ต้นแบบ ณ วันที่ปัจจุบัน clirr จะไม่ตรวจสอบสถานการณ์นี้

7006 - วิธี บริการรถส่ง ประเภท การเปลี่ยนแปลง

ความรุนแรงแบบไบนารี: ERROR

ความรุนแรงของแหล่งที่มา: INFO หรือ ERROR

เมธอดที่ระบุมีการเปลี่ยนแปลงประเภทการส่งคืนที่ประกาศ ไม่ว่าจะมีปัญหา
เกิดขึ้นจริงขณะรันไทม์เมื่อใช้โค้ดที่คอมไพล์กับเวอร์ชันเก่าของ this
ห้องสมุดขึ้นอยู่กับรูปแบบการใช้งาน รหัสเก่าอาจเรียกวิธีการอื่นในคลาสนี้
อย่างไรก็ตาม การพยายามเรียกใช้เมธอดที่เปลี่ยนประเภทการส่งคืนจะส่งผลให้
NoSuchMethodError ถูกส่งออกไปเมื่อมีการเรียกใช้เมธอดเนื่องจากการส่งคืน
type เป็นส่วนหนึ่งของ "method signature"

การเปลี่ยนแปลงนี้เข้ากันได้กับซอร์สโค้ดก็ต่อเมื่อประเภทการส่งคืนใหม่เป็น
กำหนดให้กับประเภทผลตอบแทนเก่า ซึ่งหมายความว่า:

หากประเภทการส่งคืนแบบเก่าเป็นประเภทดั้งเดิม ดังนั้นประเภทการส่งคืนใหม่จะต้องเป็น
แคบกว่าแบบเก่า
หากประเภทการส่งคืนแบบเก่าเป็นอินเทอร์เฟซ ดังนั้นประเภทการส่งคืนใหม่จะต้องเป็น a
คลาสหรืออินเทอร์เฟซที่ใช้ประเภทการส่งคืนแบบเก่า
หากประเภทการส่งคืนแบบเก่าเป็นคลาส ดังนั้นประเภทการส่งคืนใหม่จะต้องเป็นคลาสย่อย
ของประเภทที่ส่งคืนก่อนหน้านี้

Clirr ไม่ได้ตรวจสอบความเข้ากันได้ของซอร์สโค้ดสำหรับการเปลี่ยนแปลงในเมธอด
ประเภทการส่งคืน; ขณะนี้สิ่งเหล่านี้ถูกรายงานอย่างง่าย ๆ ว่าเป็นข้อผิดพลาด

7007 - วิธี มี รับ เลิก

ความรุนแรง: INFO

วิธีการที่ระบุได้รับการประกาศเป็น "เลิกใช้แล้ว" นี่คือ a . เสมอ
การเปลี่ยนแปลงที่เข้ากันได้กับไบนารีเช่นเดียวกับการเปลี่ยนแปลงที่เข้ากันได้กับซอร์สโค้ด

7008 - วิธี มี รับ ไม่สนับสนุน

ความรุนแรง: INFO

มีการประกาศวิธีการที่ระบุ "เลิกใช้แล้ว" ในเวอร์ชันก่อนหน้า แต่ไม่ใช่
เลิกใช้งานอีกต่อไปในรุ่นปัจจุบัน แม้ว่าจะผิดปกติเล็กน้อย นี่คือ
ได้รับอนุญาต การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงที่เข้ากันได้กับไบนารีเสมอเช่นเดียวกับa
การเปลี่ยนแปลงที่เข้ากันได้กับซอร์สโค้ด

7009 - วิธี is ตอนนี้ น้อยกว่า ที่สามารถเข้าถึงได้

ความรุนแรง: ERROR

สิทธิ์การเข้าถึงที่เกี่ยวข้องกับวิธีการที่ระบุถูกทำให้รัดกุมถึง
อนุญาตให้ใช้รหัสผู้ใช้น้อยกว่าในการเข้าถึงวิธีการ

การเปลี่ยนแปลงนี้เป็นปัญหาความเข้ากันได้ของซอร์สโค้ดหรือไม่ขึ้นอยู่กับ
รูปแบบการใช้งาน.

การเปลี่ยนแปลงนี้ควรเป็นไบนารีที่เข้ากันไม่ได้ อย่างไรก็ตาม โปรดทราบว่า JVMs ปัจจุบันทำ
ไม่ตรวจสอบสิ่งนี้ รหัสที่คอมไพล์เทียบกับรุ่นก่อนหน้าของคลาส can
เรียกวิธีที่พวกเขาไม่มีสิทธิ์ในการเข้าถึงได้สำเร็จ
อย่างไรก็ตาม Java Language Specification ระบุว่านี่เป็นข้อผิดพลาด ดังนั้น
clirr รายงานการเปลี่ยนแปลงนี้เป็นความไม่ลงรอยกันของไบนารี

7010 - วิธี is ตอนนี้ เพิ่มเติม ที่สามารถเข้าถึงได้

ความรุนแรง: INFO

สิทธิ์การเข้าถึงที่เกี่ยวข้องกับวิธีการที่ระบุได้รับการคลายไปที่
อนุญาตให้รหัสผู้ใช้เพิ่มเติมในการเข้าถึงวิธีการ นี่เป็นไบนารีและซอร์สโค้ดเสมอ
การเปลี่ยนแปลงที่เข้ากันได้

7011 - วิธี ที่เพิ่ม

ความรุนแรง: INFO

เพิ่มวิธีการที่ไม่ใช่นามธรรมในคลาสที่ระบุ นี่คือ a . เสมอ
การเปลี่ยนแปลงที่เข้ากันได้กับไบนารี

นอกจากนี้ยังเป็นการเปลี่ยนแปลงที่เข้ากันได้กับซอร์สโค้ด

ถาม: หากวิธีการใหม่แทนที่วิธีการสืบทอด เวอร์ชันใดที่ใช้รหัส
รวบรวมกับเรียกห้องสมุดเก่า?

7012 - วิธี ที่เพิ่ม ไปยัง อินเตอร์เฟซ

ความรุนแรงแบบไบนารี: ERROR

ความรุนแรงของแหล่งที่มา: ERROR

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

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

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

7013 - นามธรรม วิธี ที่เพิ่ม ไปยัง ชั้น

ความรุนแรงแบบไบนารี: ERROR

ความรุนแรงของแหล่งที่มา: ERROR

มีการเพิ่มการประกาศวิธีการที่เป็นนามธรรมในคลาสที่ระบุ นี่คือ
รายงานเสมอว่าเป็นข้อผิดพลาดที่เข้ากันได้กับไบนารี แต่ในทางปฏิบัติคลาสที่เปลี่ยนไป
อาจใช้สำเร็จด้วยโค้ดที่คอมไพล์กับคลาสเก่าขึ้นอยู่กับ
รูปแบบการใช้งาน

หากอินสแตนซ์ของอ็อบเจ็กต์ที่คอมไพล์กับคลาสเก่าถูกสร้างขึ้น แสดงว่า
วิธีการสามารถเรียกใช้ได้โดยไม่มีปัญหา แต่ถ้าวิธีนามธรรมที่เพิ่มใหม่คือ
เคยถูกเรียกใช้ จากนั้น AbstractMethodError จะถูกโยนในเวลาที่เมธอด
มีการพยายามเรียกใช้

7014 - วิธี ตอนนี้ สุดท้าย

ความรุนแรง: ERROR

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

เมื่อcontainigคลาสเก่าวิธีนี้ถือเป็นที่สิ้นสุด (โดยชัดแจ้งหรือโดยการให้เท่านั้น
ตัวสร้างส่วนตัว) ดังนั้นคลาสย่อยจึงไม่มีอยู่ ปัจจุบัน Clirr ไม่ได้ตรวจสอบ
สำหรับสถานการณ์นี้ ดังนั้น สิ่งนี้จะทำให้เกิดสัญญาณเตือนที่ผิดพลาดในบางกรณี

7015 - วิธี ตอนนี้ รอบชิงชนะเลิศ

ความรุนแรง: INFO

วิธีการนี้เป็นขั้นตอนสุดท้าย และตอนนี้ยังไม่สิ้นสุด นี่คือ a . เสมอ
การเปลี่ยนแปลงที่เข้ากันได้กับไบนารี

8000 - ชั้น ที่เพิ่ม

ความรุนแรง: INFO

ไลบรารีเวอร์ชันใหม่มีคลาสที่ไม่มีอยู่ในเวอร์ชันเก่า
รุ่น

8001 - ชั้น ลบออก

ความรุนแรง: ERROR

ไลบรารีเวอร์ชันใหม่ไม่มีคลาสที่ระบุอีกต่อไป

ตัวอย่าง


ตรวจสอบความเข้ากันได้ของไลบรารีกับเวอร์ชันก่อนหน้า:

clirr -o foo-1.0.jar -n foo-2.0.jar

ตรวจสอบความเข้ากันได้ย้อนหลังของไลบรารีใหม่ขึ้นอยู่กับ Apache Commons Logging:

clirr -o foo-1.0.jar -n foo-2.0.jar -ocp /usr/share/java/commons-logging.jar -ncp
/usr/share/java/commons-logging.jar

หน้าแรก


http://clirr.sourceforge.net

พฤศจิกายน 2013 คลีร์ร์(1)

ใช้ clirr ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad