Jdbi: JDBI3 الإصدار 3.19.0 لا يعمل على JDK <11

تم إنشاؤها على ١٢ أبريل ٢٠٢١  ·  7تعليقات  ·  مصدر: jdbi/jdbi

وفقًا لملاحظات الإصدار ، توقعت أن يعمل هذا الإصدار على JDK 8 وما بعده ، لكنني تلقيت الخطأ التالي:

java.lang.UnsupportedClassVersionError: com/github/benmanes/caffeine/cache/Caffeine has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 53.0

الإصدار 55.0 هو JDK 11 ، لذلك لن يعمل هذا على JDK 8 وما بعده.
ظهر ذلك في طلب الدمج التالي: https://github.com/talsma-ict/enumerables/pull/242

question

التعليق الأكثر فائدة

آسف هذا الشيء: لا يحتوي الكافيين على أي إصدار يعمل على كل من jdk8 و jdk16

فقط لمعلوماتك ، مشكلة التوافق في 2.x هي فقط لأولئك الذين يريدون تعطيل sun.misc.Unsafe . لا يزال هذا مسموحًا به في JDK16 افتراضيًا ، ولكن يمكن تقييده عبر jlink. لم يعد غير الآمن مطلوبًا في Caffeine 3.0 (عبر العناصر الاحتياطية) ، وتمت إزالته بالكامل على Master (القادم 3.0.2). تشديد قيود الوصول في JDK16 لم يؤثر علينا ، لكن JDK8 لم يتم شحنها مع VarHandles لذلك كنا عالقين في استخدام Unsafe (أو الترحيل إلى AtomicReferenceFieldUpdater الذي يعاني من مشاكل في الأداء بسبب استخدام الانعكاس عند الوصول إلى حقل) .

ال 7 كومينتر

مرحبًا sjoerdtalsma ، آسف هذا الشيء: لا يحتوي الكافيين على أي إصدار يعمل على كل من jdk8 و jdk16. منذ 16 الآن GA ، تمت ترقية Jdbi إلى إصدار Caffeine متوافق. تذكر ملاحظات الإصدار:

قم بترقية caffeine dep إلى 3.0.1 لـ jdk16 (ملاحظة: سيحتاج مستخدمو jdk8 إلى إدارته مرة أخرى إلى 2.x)

لكنني أوافق على أنها ليست بارزة جدًا.

لقد أضفت أيضًا ملاحظة هنا: http://jdbi.org/#_java_compatibility

هل هناك طريقة ما يمكننا من خلالها إرسال إشارة أفضل إلى هذا للمستخدمين؟ نأمل بمجرد إدارة إصدار الكافيين مرة أخرى إلى 2.x ، كل شيء يعمل فقط ، ولكن يرجى إخبارنا إذا كانت هناك مشاكل أخرى.

لقد أجريت بعض التحديثات على ملاحظات الإصدار لتوضيح ذلك بشكل أكثر بروزًا. أخبرنا إذا كان هناك أي شيء آخر يمكننا القيام به بشكل أفضل هنا.

شكرًا ، أتمنى أن يقرأ الآخرون بعناية أكبر مني.
إنها ليست مشكلة بالنسبة لي حقًا ، ولكن شيئًا يجب على مستخدمي مكتبتي توخي الحذر منه بالإضافة إلى أنه تبعية متعدية لتبعية متعدية بالنسبة لهم.

قررت عدم تقليل مستوى الكافيين ، ولكن التزمت بالإصدار القياسي وأبني فقط باستخدام JDK أحدث مع الاستمرار في تقديم قطعة أثرية JDK8 bytecode. بهذه الطريقة أترك الأمر لهم ليقرروا بأنفسهم.

شكرًا لك على التركيز الإضافي ، سأغلق هذه المشكلة الآن.

نعم ، من المؤسف حقًا أن يتم دفع هذا إلى المستخدمين النهائيين. ولكن إذا كانوا يريدون تجربة تطوير ممتازة ، فقد حان الوقت لترقية Java ، وسيستمر تشغيلها على 8 أصعب وأصعب ؛)

تخيل أنك تحاول الحفاظ على توافق JDK 1.5 bytecode أثناء إضافة Jigsaw module-info.java بيانات وصفية لمكتبتك 😉
أحاول أن أبقي المتطلبات مقتصرة على القاسم المشترك الأصغر.

آسف هذا الشيء: لا يحتوي الكافيين على أي إصدار يعمل على كل من jdk8 و jdk16

فقط لمعلوماتك ، مشكلة التوافق في 2.x هي فقط لأولئك الذين يريدون تعطيل sun.misc.Unsafe . لا يزال هذا مسموحًا به في JDK16 افتراضيًا ، ولكن يمكن تقييده عبر jlink. لم يعد غير الآمن مطلوبًا في Caffeine 3.0 (عبر العناصر الاحتياطية) ، وتمت إزالته بالكامل على Master (القادم 3.0.2). تشديد قيود الوصول في JDK16 لم يؤثر علينا ، لكن JDK8 لم يتم شحنها مع VarHandles لذلك كنا عالقين في استخدام Unsafe (أو الترحيل إلى AtomicReferenceFieldUpdater الذي يعاني من مشاكل في الأداء بسبب استخدام الانعكاس عند الوصول إلى حقل) .

مرحبًا @ ben-manes ، شكرًا على السياق الإضافي هنا. صحيح أن jdk16 يسمح لك بالاستمرار في استخدام Unsafe لكنني لا أعتقد أنه مسموح به افتراضيًا - على الأقل في حالتنا كان علينا أن نجتاز --illegal-access=permit لأن الخيار الافتراضي الآن رفض. لم أكن أرغب في أن تتطلب "تجربة خارج الصندوق" لمشروع jdk16 جديد مع Jdbi مفتاحًا قبيحًا من هذا القبيل ، ومن ثم الترقية إلى 3.x.

نشكرك على التحديث لعدم استخدام Unsafe بعد الآن ، ويسعدنا أن نراها تختفي :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

matty picture matty  ·  10تعليقات

TechZi picture TechZi  ·  12تعليقات

alexcase52 picture alexcase52  ·  14تعليقات

miere picture miere  ·  27تعليقات

jeff-blaisdell picture jeff-blaisdell  ·  20تعليقات