الكسوف "لا يمكن العثور على واصف مكتبة العلامة" للحصول على علامات مخصصة (وليس JSTL!)

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

سؤال

لدي مشروع Java EE الذي يبني غرامة مع النمل، وينشر تماما إلى JBoss، ويعمل دون أي مشكلة. يتضمن هذا المشروع قليلة العادة مكتبات العلامات (التي ليست كذلك jstl.!)، والتي تعمل أيضا دون أي صعوبات.

المشكلة هي مع Eclipse IDE (GANYMEDE): في كل ملف JSP واحد يستخدم علاماتنا المخصصة، فإن إشارة محلل JSP تتضمن Taglib السطر مع هذا الخطأ:

Cannot find the tag library descriptor for (example).tld

يؤدي هذا أيضا إلى تمييز كل استخدام مكتبة التبويب كخطأ، وبما أن IDE ليس لديه تعريفها، فلا يمكن التحقق من معلمات العلامات، إلخ.

لدينا ملفات JSP تعمل تماما هي بحر من الأخطاء الحمراء، وبدأت عيني في حرقها.

كيف يمكنني ببساطة معرفة الكسوف "واصف مكتبة العلامة التي تبحث عنها هي" SRC / Web / Web-INF / (مثال) -taglib / (مثال). TLD "؟

لقد طرحت بالفعل هذا السؤال في منتديات دعم الكسوف، مع عدم وجود نتائج مفيدة.

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

المحلول 4

اتضح أن السبب هو أن هذا المشروع لم ينظر فيه الكسوف في الواقع بمشروع Java EE على الإطلاق؛ لقد كان مشروعا قديما من 3.1، وكان Eclipse 3.5 الذي نستخدمه الآن يتطلب تعيين العديد من "الطبيعيات" في ملف تكوين المشروع.

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>InCode.inCodeNature</nature>
    <nature>org.eclipse.dltk.javascript.core.nature</nature>
    <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
</natures>

تمكنت من العثور على السبب من خلال إنشاء "مشروع ويب ديناميكي" جديد يقوم بقراءة ملفات JSP الخاصة به بشكل صحيح، وتفتيت مقابل تكوين المشروع الأقدم.

الطريقة الوحيدة التي يمكنني العثور عليها لإضافةها كانت عن طريق تحرير ملف .project، ولكن بعد إعادة فتح المشروع، كل شيء يعمل بطريقة سحرية. لم تكن الإعدادات التي تمت الإشارة إليها عن طريق Pribeiro، أعلاه، ضرورية لأن المشروع متوافق بالفعل مع الإعدادات الافتراضية.

أعطاني إجابات Pribeiro و Nitind's أفكارا ل Jumpstart بحثي، شكرا.

هل هناك طريقة لتحرير هذه "الطبيعة" من داخل واجهة المستخدم؟

نصائح أخرى

في Eclipse Helios "تعايش الوحدة النمطية Java EE" في خصائص المشروع قد تم استبدال "تجميع النشر".

لذلك لحل هذه المشكلة مع Eclipse Helios، الطريقة التي فعلت بها ذلك ما يلي:

  • انقر بزر الماوس الأيمن على المشروع في حزمة مستكشف واختر "استيراد ..."
  • قبول الاختيار الافتراضي "نظام الملفات" واضغط على "التالي"
  • اضغط على "استعراض" في سطر الدليل، انتقل إلى تثبيت Tomcat الخاص بك وتحديد موقع ملف Webapps / الأمثلة / Web-INF / LIB (لدي Tomcat 6، والإصدارات الأخرى من Tomcat قد يكون لها PATH WebApps / JSP- أمثلة / Web- INF / LIB). مرة واحدة في المسار اضغط موافق.
  • انقر فوق إلى جانب JSTL.JAR و Standard.jar لتنشيط خانات الاختيار
  • على الخط إلى مجلد، انقر فوق استعراض واختيار مجلد المكتبة. أنا استخدم / lib داخل المشروع.
  • انقر فوق "إنهاء"
  • انقر بزر الماوس الأيمن فوق المشروع في عرض حزمة Explorer واختر خصائص (أو اضغط ALT + ENTER)
  • انقر فوق "مسار بناء Java"
  • انقر فوق "إضافة جرة"، انقر فوق مشروعك، LIB مجلد، حدد JSTL.JAR، اضغط على "موافق"
  • انقر فوق "إضافة جرة"، انقر فوق مشروعك، مجلد Lib، حدد Standard.jar، اضغط على "موافق"
  • اضغط على موافق لإقالة مربع الحوار "خصائص"
  • انقر فوق المشكلات عرض وحدد الرسالة "لن يتم تصدير إدخال ClassPath ... / JSTL.JAR.
  • انقر بزر الماوس الأيمن فوقها وحدد "الإصلاح السريع".
  • قبول الإعداد الافتراضي "قم بتمييز إدخال Class ClassPath المرتبط كإعالة نشر / تصدير" واضغط على الانتهاء.
  • افعل نفس الشيء بالنسبة إلى Standard.jar

هذا يحل المشكلة، ولكن إذا كنت ترغب في التحقق من ما حدث في "تجميع النشر"، افتح خصائص المشروع مرة أخرى، وحدد "تجميع النشر" وسترى أنه تمت إضافته إلى الويب و JSTL.JAR مجلد INF / LIB.

كانت هذه مشكلتي وكيف قمت بإصلاحها ...

لقد فعلت كل شيء قد ذكر الجميع أعلاه، لكنه كان لا يزال الحصول على هذا الخطأ. اتضح أنني كنت أستخدم URI http://java.sun.com/jsp/jstl/fmt و http://java.sun.com/jsp/jstl/core التي كانت غير صحيحة.

حاول تبديل URIS من الأعلى إلى:

http://java.sun.com/jstl/fmt
http://java.sun.com/jstl/core

أيضا، تأكد من أن لديك الجرات الصحيحة المشار إليها في مسار الفصل الخاص بك.

كان لدي نفس المشكلة مع المشارب taglib uri تظهر كما لم يتم العثور عليها. كنت أستخدم Indigo and Maven وعندما قمت بفحص الخصائص -> Java Build Path-> علامة تبويب الطلبات والتصدير التي وجدتها (على الخروج من مشروع جديد) أن خانة الاختيار "تبعيات مافن" لم يتم التحقق من ذلك لسبب ما. ما عليك سوى التحقق من ذلك المربع والقيام بتطهير تثبيت Maven Clean Clean جميع الأخطاء.

أتساءل لماذا لا يفترض الكسوف أنني أريد تعايشاتي في مافن في مسار البناء ...

ركض في نفس المشكلة، أنا أستخدم Maven لذلك أضفت هذا إلى POM في مشروع الويب الخاص بي:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version> <!-- just used the latest version, make sure you use the one you need -->
    <scope>provided</scope>
</dependency>

هذا ثابت المشكلة واستخدمت نطاق "شريطة" لأن مثل OP، كان كل شيء يعمل بالفعل في JBOSS.

هنا حيث وجدت الحل: http://alfredjava.wordpress.com/2008/12/22/jstl-connot-resolved/

عندما حاولت تضمين مكتبة JSTL الأساسية في بلدي JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

حصلت على الخطأ التالي في Eclipse (Indigo):

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

ذهبت إلى خصائص المشروع -> تشغيل الأوقات المستهدفة، ثم فحص الخادم الذي كنت أستخدمه (Geronimo 3.0). معظم الناس سوف يستخدمون tomcat. هذا حل مشكلتي. آمل أن يساعد!

أنا إصلاح هذه المشكلة اليوم.

  • قم بتغيير دليل الإخراج الخاص بك إلى مجلد Web-Inf / Classes. (مشروع / خصائص / مسار بناء جافا، مجلد الإخراج الافتراضي)
  • تعيين تبعيات الوحدة النمطية. (تبعيات المشروع / الخصائص / java EE الوحدة النمطية) سيتم نسخها إلى مجلد INF-INF / LIB حيث يبحث Eclipse عن تعريفات TAB TAB أيضا.

اتمني ان يكون مفيدا.

كثيرا يعتمد على نوع المشروع هو. تتوقع دعم JSP الخاص بشركة WTP إما أن تكون ملفات JSP تحت نفس المجلد الذي هو الوالد من مجلد Web-Inf (SRC / Web، الذي سيعامله بعد ذلك باسم "/" للعثور على TLDs)، أو للحصول على بيانات تعريف مشروع ساعده في معرفة مكان وجود هذا الجذر (من أجلك في مشروع ويب ديناميكي من خلال تجميع النشر). كيف تشير إلى ملف TLD، وأين يقع ملف JSP؟

وربما فاتني المنشور الأصلي إلى منتديات الكسوف؛ تم نشر الشخص الذي رأيته يوما كاملا بعد هذا.

تحقق من المكتبات في F:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib:

  1. jstl.jar.
  2. standard.jar.

واجهت نفس المشكلة. هذا هو ما فعلته لحل المشكلة.

  1. حدد المشروع والنقر بزر الماوس الأيمن.
  2. انقر على الخصائص.
  3. انقر فوق علامة التبويب مكتبات المكتبات.
  4. انقر فوق "إضافة الجرار".
  5. إضافة جرة ذات الصلة لخطأ الخطأ الخاص بك.

يمكنك ببساطة الذهاب إلى Build Path -> إضافة مكتبات وإضافة نوع المكتبة لإضافة "وقت تشغيل الخادم". انقر فوق "التالي" وحدد وقت تشغيل خادم للإضافة إلى ClassPath والمشكلة يذهب بعيدا إذا jstl.jar و standard.jar موجودة في classpath الخادم الخاص بك.

أنا أستخدم البرنامج المساعد Spring Sts ومشروع قالب WebMVC الربيع. اضطررت إلى تثبيت البرنامج المساعد Maven M2E أولا: http://www.eclipse.org/m2e/

ثم قم بتنظيف المشروع. تحت Project -> Clean...

إذا كانت TLD الخاصة بك على ClassPath، عادة ضمن دليل INF على الويب، يجب على النصائح التالية حل المشكلة (بغض النظر عن إعداد البيئة الخاص بك):

  1. ضمان أن <uri> في TLD و URI في توجيه Taglib لمطابقة صفحات JSP الخاصة بك. ال <uri> عنصر TLD هو اسما فريدا لمكتبة العلامة.

  2. إذا كان TLD ليس لديه <uri> العنصر، ستحاول الحاوية استخدام سمة URI في توجيه Taglib كمسار إلى TLD الفعلي. على سبيل المثال، يمكن أن يكون لدي ملف TLD مخصص في مجلد Web-Inf واستخدام المسار إلى TLD هذا كقيمة URI في JSP. ومع ذلك، هذه ممارسة سيئة ويجب تجنبها منذ أن تكون المسارات بعد ذلك.

كان لدي نفس المشكلة مع MyClipse و Eclipse 6.6.0. اصطف باللون الأحمر قيمة URI في كل

<%@ taglib prefix="s" uri="/struts-tags"%>وبعد لقد قمت بإصلاحها بالانتقال إلى مكتبات "المشاريع / myeclipse / web / tag" وإعداد بادئة TLD الافتراضية ل Struts 1.2 علامات البلاط إلى "S". كان علي أيضا أن أفعل نفس الشيء بموجب إعدادات مساحة العمل "المشروع / Myeclipse / Web / تكوين مساحة عمل ... / مكتبات العلامات".

كان لدي نفس المشكلة مع STS (SPRINGTOOL Source Suite).

تحت STS، انقر بزر الماوس الأيمن فوق المشروع، من "خصائص"، "جوانب المشروع"، من حق النافذة انقر فوق علامة التبويب "وقت التشغيل"، وتحقق من "خادم VFabric TC Server (...)"، وانقر فوق "تطبيق" وينبغي أن يكون موافق بعد تحديث مساحة العمل.

حسنا، عليك أن تفهم أن هناك دائما شيئين واجهة برمجة التطبيقات والتنفيذ (مانع تنسيق المتدرج في التعليمات البرمجية التالية)

compile group:'javax.servlet.jsp.jstl', name:'javax.servlet.jsp.jstl-api', version:'1.2.1'

compile group:'org.glassfish.web', name:'javax.servlet.jsp.jstl',version:'1.2.1'

لذلك إذا كنت تستخدم حاوية Servlet مع عدم دعم JSTL، فلن تقدم كل منهما، وهو خطأ قمت به هو أنني وضعت فقط أول واحد، ولكن إذا كنت تستخدم خادم تطبيقات كومة كاملة IE Glassfish ثم سيكون لدى Glassfish كلاهما في الداخل بالفعل.

بالنسبة لي، يحدث هذا الخطأ كلما حاولت استخدام إصدار جديد من الكسوف. على ما يبدو، يعيد الكسوف الجديد M2_REPO متغير والحصول على كل خطأ مكتبة العلامات في Marker عرض (في بعض الأحيان مع أخطاء التحقق من صحة EJB).

بعد التحديث M2_REPO متغير للإشارة إلى موقع مستودع MAVEN الفعلي، يستغرق الأمر 2-3 مشروع -> تكرارات تنظيف للحصول على كل شيء يعمل.

وأحيانا، هناك بعض أخطاء التحقق من صحة XML (EJB) جنبا إلى جنب مع أخطاء مكتبة العلامات هذه. يقوم بتحديث ملف XML المقابل يدويا، ويبدأ البحث عن ملف * .xsd ويتم حل أخطاء التحقق من صحة XML. نشر هذا، تختفي أخطاء مكتبة العلامة أيضا.

من ناحية أخرى، إذا كنت تعمل فقط على مصدر Java وتتوفر هذه الأخطاء من الأشياء التي لا تلمسها في مشروع كبير يعمل، فيمكنك فقط إيقاف تشغيل التحقق من الصحة في الكسوف. الإعدادات ضمن التفضيلات -> Web-> ملفات JSP-> التحقق من الصحة

كنت أواجه نفس المشكلة باستخدام Tomcat 6.0 and Eclipse وجربت شيئا اقترح صديقي ويعمل من أجلي. يمكن العثور هنا على رابط السؤال الذي طلبته وردي تعليق هنا:

JSTL Tomcat 6.0 لا يمكن العثور على خطأ واصف Taglib

اسمحوا لي أن أعرف إذا كان هذا يحل "لا يمكن العثور على مشكلة واصف taglibrary".

يمكن أن ينشأ هذا الخطأ من عدة مصادر مختلفة. تحدث حالة واحدة (غير مذكورة في إجابات أخرى على هذا السؤال) عندما لا يقوم Eclipse بتنفيذ إصدار مواصفات JSP المضطربة في مستند TLD. إصدارات الكسوف تتأخر عادة ما يصل إلى عام في تنفيذ مواصفات Servlet Gewore و JSP. يرى هذا الخلف الكسوف علي سبيل المثال.

في هذه الحالة، قد يعمل تطبيق الويب الخاص بك بشكل جيد في أحدث إصدار من Tomcat، ولكن قد لا يزال الكسوف يشكو من TLD مفقود. الحل على المدى القصير (اختصار تجاهل الخطأ في الكسوف) هو أن يضعف نسخة JSP إلى تلك التي يدعمها الإصدار الخاص بك من Eclipse.

أيضا، ضع في اعتبارك الإصدار TLD الذي تقوم به. لقد تغيرت أسماء العلامات قليلا من v1.1 إلى v2.0 (أي info هو الآن description على taglib وليس عنصر صالح تحت tag, ، تحتوي العديد من أسماء العناصر الآن على واصلة). Eclipse ليس لديه التسامح لأسماء علامة إملاء أخطاء إملائية TLD.

TLD 2.0 (JSP-Version 2.0) مرجع

مرجع TLD 2.1 (JSP-Version 2.3)

استبدال jstl.jar إلى jstl1.2.jar حل المشكلة ل Tomcat 7.0

واجهت أيضا نفس المشكلة. تأكد من أن لديك نفس إصدارات JSTL في Eclipse وفي دليل عمل Tomcat، أي في \webapps\examples\WEB-INF\lib و في lib مجلد.

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