لا يمكن استخدام Jface و SWT في Eclipse دون إنشاء البرنامج المساعد

StackOverflow https://stackoverflow.com/questions/1952586

سؤال

تنصل:

هذه هي الحالة الكلاسيكية لـ .NET GUI التي تحاول أن تدور حول أشياء Java.

وصف المشكلة:

أحاول بناء واجهة مستهلكية بسيطة للغاية مع Jface و SWT - الرمز واضح ومباشر (هناك الكثير من البرامج التعليمية) ، ما ليس واضحًا جدًا هو أنه لا يمكنني الحصول على Jface و SWT للعمل خارج مشروع إضافي.

أتوقع أن أكون قادرًا على استخدام Jface و SWT في مشروعي لا متاعب ، لأنني وضعت "C:/Eclipse 3.5/Plugins" في ClassPath الخاص بي (من جهاز الكمبيوتر الخاص بي -> خصائص -> متغيرات متطورة -> متغيرات البيئة) وجميع SWT-*. DLL يمكن أن أجدها في طريقي (كل من المستخدم المحلي والمسارات العالمية ، بالتأكيد) كـ هذه المقالة يشير في مربع "تثبيت SWT و JFACE".

المشكلة هي أنني لا أستطيع استيراد أي شيء من Eclipse.org إلا إذا أشرت مباشرة إلى الجرار من BuildPath -> المكتبات -> إضافة الجرار الخارجية (من أجل بناء ، يجب علي إضافة الجرار التالية: org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar, org.eclipse.jface_3.5.1.m20090826-0800.Jar). بمجرد أن أفعل ذلك ، فإنه يبني بشكل جيد ولكن عندما أقوم بتشغيله كـ "تطبيق Java" ، أحصل على الخطأ التالي (إذا كان يجب علي اهرب مثل شيء آخر؟):

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
    at demo.ui.test.EntryPoint.main(EntryPoint.java:18)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more

حاولت تصحيح هذا وبشكل أساسي يتم إلقاؤه بمجرد أن تحاول إنشاء مثيل ApplicationWindow فئة (org.eclipse.jface.window.applicationwindow). في محاولة لإعادة إنتاج الخطأ ، علقت كل رمز بلدي واستبدلت بما يلي في رئيسي ويرمي نفس الخطأ على النحو الوارد أعلاه في السطر الأول:

ApplicationWindow w = new ApplicationWindow(null); //<-- error on this line
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose();

أسئلة:

السؤال رقم 1: كيف يمكنني إصلاح الخطأ أعلاه (أود أن أفهم ما يجري) والحصول على الشيء اللعين لتشغيله؟

السؤال 2: لماذا لا تكون الجرار مرئية لمشروعي وكيفية صنعها؟

ربما أفتقد شيئًا تافليًا للغاية بسبب افتقاري إلى الألفة مع Java و Eclipse. أي مساعدة موضع تقدير كبير!

تعديل: يبدو أن شخصًا آخر لديه نفس المشكلة -> http://www.eclipsezone.com/eclipse/forums/t60528.html - ليس من الواضح جدًا كيف قاموا بحلها على الرغم من تقدير المساعدة

هل كانت مفيدة؟

المحلول

IProgressMonitor الواجهة غير متوفرة في هاتين الجرار اللذين تستخدمهما. تحتاج أيضًا إلى وضعها org.eclipse.equinox.common البرنامج المساعد على classpath الخاص بك. IProgressMonitor يمكن استخدامها دون تشغيل بيئة الكسوف الكاملة.

) علة #122935)

نصائح أخرى

مرددًا نقطة بيتر أعلاه ، يجب علي دائمًا إضافة مجموعة من الجرار لتشغيل الأشياء (خاصة بالنسبة لـ Jface). عادة ، سأحتاج

./org.eclipse.core.commands_3.3.0.I20070605-0010.jar
./org.eclipse.core.runtime_3.3.100.v20070530.jar
./org.eclipse.equinox.common_3.3.0.v20070426.jar
./org.eclipse.jface_3.3.1.M20070910-0800b.jar
./org.eclipse.osgi_3.3.2.R33x_v20080105.jar
./org.eclipse.ui.forms_3.3.0.v20070511.jar

يمكنك استخدام شيء مثل Jarfinder للمساعدة في اكتشاف ما تعيشه الملفات في الجرار. في Windows ، يبدو أنني أتذكر استخدام ميزة Find للبحث عنها ، على سبيل المثال ، IProgressMonitor.class في ملفات zip/jar ضمن مجلد Eclipse على نظام الملفات - حيث يصعب تعقب الجرار الفعلية في بعض الأحيان.

عادةً ما أعمل من خلال رؤية ما يفشل ، وتتبع / إضافة الجرة ، وشطف وتكرار.

يبدو أن RCP/Plugins يبدو أن Eclipse يعتني بالكثير من المشكلات بالنسبة لك ، ويأتي القيام بتطبيق خاص بك بمفردك مع هذه الأمتعة الإضافية ، لكن من الجيد حقًا أن يكون لديك واجهة مستغللة مستقلة مناسبة إذا كنت تلتزم بها. لذلك عادةً ما أقوم بإعداد مشاريع Eclipse للفانيليا (غير اللوحين) ، وهو يجبرك على مواجهة هذه المشكلات (إضافة الجرار إلى ClassPath يدويًا). كما أنه في متناول يديك وعندما تريد توزيع مشروعك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top