page - باستخدام JavaFX في JRE 8



oracle se java (8)

عند محاولة استخدام الطبقات المرتبطة بـ javafx في مشروع جافا 8 الجديد ، أحصل على خطأ في تقييد الوصول من الكسوف. حتى الآن ، الحل الوحيد الذي تمكنت من العثور عليه هو أن أقول للكسوف تجاهل قيود الوصول ، لكنني لست راضياً عن ذلك. مثال على الخطأ:

Access restriction: The type Pane is not accessible due to 
restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar

أنا باستخدام Eclipse Kepler مع التصحيح Eclipse JDT لجافا 8.

يبدو أن هذه مشكلة تتعلق بحقيقة أن JavaFX ليست جزءًا من بيئة تنفيذ JavaSE.

أنا الآن مرتبك بشدة وفقا ل http://en.wikipedia.org/wiki/JavaFX javaFX هو جزء من JavaSE. هل من الممكن ألا يدرك Eclipse أنه جزء من javaSE؟


Answer #1

أعلم أن هذا قد تمت الإجابة عليه بالفعل ، لكني أجد الحلول المقترحة مضمونة.

  1. لا أرغب في تثبيت مكون إضافي لتجنب ما أعتبره خطأ غير صالح.
  2. ستؤدي إضافة jfxrt.jar إلى جرة خارجية إلى العمل ، ولكنها فكرة سيئة إذا كنت تخطط للقيام بعملية تصدير لأن jfxrt.jar سيتم تصديره أيضًا. ربما ليس ما انت تريد.

خيار اخر

في إصدار "المريخ" (وربما الإصدارات السابقة) ، يمكنك تعطيل أخطاء قيود الوصول. تحت

جافا-> مترجم-> عرض الأخطاء / التحذيرات

و

"واجهة برمجة التطبيقات الموقوفة والمقيدة"

يمكنك تعيين "Forbidden reference (access rule)" to ignore.


Answer #2

اتبع هذه الخطوات:
1. أضف jfxrt.jar (من مجلد installtion الخاص بك) كملف "JAR خارجي" في علامة التبويب "المكتبات".

  1. في علامة التبويب "الطلب / التصدير" ، تأكد من أن هذا jfxrt.jar موجود أولاً في القائمة.

هذا العمل بالنسبة لي


Answer #3

خطوة 1: انتقل إلى jfxrt.jar الخاص بك. C: \ Program Files \ Java \ jre1.8.0_111 \ lib \ ext

الخطوة 2 نسخ الملف jfxrt.jar

الخطوة 3: اذهب إلى Eclipse ، قم بإنشاء مجلد جديد مثل: [إنشاء اسم المجلد lib لوضع ملف jfxrt.jar الخاص بنا] [2] [2]: https://i.stack.imgur.com/YsJ5S.png

Step-4: حدد مجلد lib واضغط CTRL + V للصق jfxrt.jar [الصق jfxrt.jar] [1] [1]: https://i.stack.imgur.com/Ljogu.png

الخطوة الخامسة: انقر بزر الماوس الأيمن على jfxrt.jar واضبطه على أنه Build Path.


Answer #4

سأضيف إجابة أخرى هنا ، فقط لتقديم ما أعتقد أنه الأسلوب الأكثر تعقيدًا. في إعداد Eclipse الخاص بي ، قمت بتثبيت e (fx) clipse ، والذي يوفر إصلاحًا واحدًا لهذا ، بالإضافة إلى توفير العديد من ميزات التطوير المفيدة التي ستحتاجها بالتأكيد تقريبًا إذا كنت تكتب تطبيقات JavaFX. ربما هذا هو النهج الأكثر عملية. إذا كنت لا تريد هذا الملحق لسبب ما ، فإن الحل المحدد في هذه الإجابة سوف يصلح المشكلة بأقل قدر من الآثار الجانبية الأخرى.

كما هو موضح في الإجابات الأخرى ، فإن Eclipse ، بشكل افتراضي ، لا تسمح بالوصول إلى الطبقات في ملفات jar في دليل jre / lib / ext ، حيث لا يمكن ضمان وجودها على جميع أنظمة Java الأساسية. إذا كنت تكتب تطبيق JavaFX 8 ، فأنت تفترض أنك على منصة حيث jfxrt.jar متوفر في موقع lib / ext.

لذا فإن الإصلاح الأدنى لهذا هو السماح بالوصول إلى الطبقات في ملف jar هذا (وفي ملف jar فقط). للقيام بذلك ، انقر بزر الماوس الأيمن فوق المشروع وإظهار مربع حوار خصائص المشروع. حدد "Build Path" في الجزء الأيمن ، وحدد علامة التبويب "Libraries". سترى إدخال "مكتبة نظام JRE". قم بتوسيع هذا الإدخال ، وستشاهد إدخال فرعي "قواعد الوصول":

حدد إدخال "قواعد الوصول" وانقر فوق "تحرير". انقر فوق "إضافة".

ضمن "الحل" ، اختر "Accessible" ، وضمن "Rule Pattern" ، أدخل javafx/** :

انقر على "موافق" للخروج من جميع مربعات الحوار.

سيسمح هذا الإعداد بالوصول إلى جميع الفئات في أي حزم تبدأ من javafx. ، ولكن سيحافظ على القاعدة على المجلد ext لجميع الفئات الأخرى ، وهو "الحد الأدنى" بهذا المعنى.

مرة أخرى ، ما تريد فعله فعلاً هو تثبيت المكوِّن الإضافي e (fx) ، ولكن على حد علمي هذا هو الحل بأقل تأثير جانبي على إعداد Eclipse.


Answer #5

كما اقترح James_D بالفعل أضفت قواعد الوصول إلى ملف classpath. لقد قمت بإلغاء تثبيت المكوِّن الإضافي لـ e (fx) في الوقت الحالي نظرًا لوجود خطأ في التحقق من css (راجع كيفية تعطيل تحذير css "خاصية غير معروفة" في Eclipse Mars؟ ).

في ما يلي الإدخال الخاص بي في ملف classpath لحاوية JRE:

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.‌​launcher.StandardVMType/JavaSE-1.8">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes> 
    <accessrules>
        <accessrule kind="accessible" pattern="javafx/**"/>
        <accessrule kind="accessible" pattern="com/sun/javafx/**"/>
    </accessrules>
</classpathentry>

Answer #6

لقد حل المشكلة عن طريق إزالة وقراءة JDK إلى مسار البناء. لا تسألني لماذا يعمل هذا ، على الرغم من.


Answer #7

من وجهة نظر Eclipse ، الخطأ صحيح تمامًا نظرًا لأن JavaFX قادم من مسار classpath وهو غير متاح على كل Java2 VMs (مثل ibm!).

كما هو موضح ، يمكنك منع هذه التحذيرات من خلال إضافة قواعد الوصول أو IMHO ، وأفضل حل هو تثبيت e (fx) clipse الذي يقوم بذلك تلقائيًا نيابة عنك وإلى جانب ذلك يوفر لك الأدوات لـ JavaFX CSS و FXML.

يمكنك الحصول على جميع في حزمة واحدة من http://efxclipse.bestsolution.at/install.html


Answer #8
  • اذهب إلى مسار بناء المشروع الحالي

تحت المكتبات

  • حدد " JRE System Library [jdk1.8xxx]"
  • انقر فوق تحرير
  • وحدد إما "مساحة JRE (Jdk1.8xx) الافتراضية لمساحة العمل أو JRE البديل
  • انقر فوق الانتهاء
  • انقر فوق موافق

ملاحظة: تأكد من أنه في Eclipse / Preferences (NOT المشروع) / Java / Installed JRE ، يشير jdk إلى المجلد JDK وليس إلى JRE C: \ Program Files \ Java \ jdk1.8.0_74





java-8