ক্যাশেপ্রভাইডারের জন্য ব্যতিক্রম NoClassDefFoundError


93

আমি স্প্রিং এবং হাইবারনেটে একধরনের নতুন তাই আমি স্প্রোক 3 + হাইবারনেট 4 এর উপর ভিত্তি করে কিছু সাধারণ ওয়েব অ্যাপ্লিকেশন বাস্তবায়নের চেষ্টা করছি যখন আমি টোমক্যাট শুরু করি তখন আমার এই ব্যতিক্রম রয়েছে:

java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.getDeclaredMethods(Class.java:1791)
    ...
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.CacheProvider
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)

আমি খুঁজে পেয়েছি যে এই শ্রেণীটি হাইবারনেট 3 এর হাইবারনেট-কোরে ছিল তবে আমি হাইবারনেট 4-তে এটি পাইনি।

অধ্যবসায়ের জন্য আমার প্রসঙ্গের অংশ। Xml:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="url" value="jdbc:oracle:thin:@IP_Address:SID"/>
    <property name="username" value="xxx"/>
    <property name="password" value="xxx"/>
    <property name="initialSize" value="5"/>
    <property name="maxActive" value="20"/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.huawei.vms.user"/>
    <property name="hibernateProperties">
        <props>
            <prop key="dialect">org.hibernate.dialect.Oracle10gDialect</prop>
        </props>
    </property>
</bean>

অনুগ্রহ করে আমাকে কেন ক্যাচিপ্রভাইডার লোড করার চেষ্টা করছে তা নির্ধারণ করতে আমাকে সহায়তা করুন কারণ প্রসঙ্গে.এক্সএমএল এর জন্য আমার কোনও সেটিংস নেই এবং আমার প্রকল্পে কোন জার যুক্ত করতে হবে। ধন্যবাদ!


আপনি হাইবারনেট কনফিগারেশন ফাইল পোস্ট করতে পারেন?
কর্নেল ক্রিঙ্গা

আমার কাছে নেই হতে পারে এটি ভুল বোঝাবুঝি এবং আমাকে যুক্ত করতে হবে যে আমি "স্প্রিং ইন অ্যাকশন 3" অধ্যায় "5.4 হাইবারনেট উইথ স্প্রিংয়ের সাথে সংহতকরণ" বইয়ে যা বর্ণিত হয়েছিল ঠিক তেমনই করেছি। যখন আমি করছিলাম যে হাইবারনেটে পাওয়া অনুপস্থিত ক্লাসগুলির সাথে আমার কিছু সমস্যা ছিল, তাই আমি আমার প্রকল্পে হাইবারনেট 4 যুক্ত করেছি। কিন্তু এটা enouph নি
ফেডোর Skrynnikov

4
আপনি কি নিশ্চিত যে হাইবারনেট 4 এর ক্লাস রয়েছে? আমি হাইবারনেটটি চেষ্টা করব 3.6.x
বোজহো

না। আমি এটি সংস্করণ 4 এ খুঁজে পাইনি। আসলে, আমি এটি খুঁজে পেয়েছি তবে এহচেতে অন্য প্যাকেজে। তবে প্রশ্ন হল টমক্যাট কেন এটি লোড করার চেষ্টা করে? এবং এটি আসলে প্রয়োজন?
ফেডর স্ক্রিনিকভ

আমি যা জানি তা থেকে এটি
হ্রাস করা হয়েছে

উত্তর:


184

আপনার এনটোটেশনসেশনফ্যাক্টরিবিয়ানকে org.springframework.orm.hibernate4.LocalSessionFactoryBean(হাইবারনেট 4) এ পরিবর্তন করুন এবং আপনি যেতে ভাল হবেন। ক্লাসের পাথ স্ক্যানিংয়ের সাথে সাথে এনোটেশনসেশনফ্যাক্টরিবিয়ানকে স্থানীয় সেশনফ্যাক্টরিবিয়ান দিয়ে প্রতিস্থাপন করা হয়েছিল।


অন্য কোন সম্ভাব্য ধারণা? এটি আমার জন্য কিছু করবে বলে মনে হয় না। সম্পত্তি কি পরিবর্তন করা দরকার?
zod

4
নিশ্চিত করুন যে আপনি প্যাকেজটি হাইবারনেট 3 থেকে হাইবারনেট 4 এ পরিবর্তন করেছেন - উভয় প্যাকেজে একটি লোকালসেশনফ্যাক্টরিবিয়ান বিদ্যমান। আপনি স্প্রিং এবং হাইবারনেটের কোন সংস্করণ ব্যবহার করছেন?
অ্যারন ডগলাস

11

এটি হাইবারনেট 4 এ প্রবর্তিত পরিবর্তনের কারণে হতে পারে যা হাইবারনেটের জন্য স্প্রিং সমর্থনের সাথে সামঞ্জস্যপূর্ণ নয়। এই ইস্যু সমর্থন হাইবারনেট 4. পৃথক প্যাকেজ যোগ করুন এটি আপনাকে বসন্ত এই জন্য 3.1 প্রয়োজন হবে সম্পর্কে আলোচনা। অন্য বিকল্পটি হ'ল হাইবারনেট 3 এ আটকে থাকা আপনার যদি 4 এ প্রবর্তিত কোনও নির্দিষ্ট বৈশিষ্ট্যটির প্রয়োজন না হয়।


হ্যাঁ. আমি হাইবারেন্ট 4 থেকে সংস্করণ 3.6.7 এ ডাউনগ্রেট করেছি এবং সবকিছুই কাজ করে চলেছে। ধন্যবাদ!
ফেডর স্ক্রিনিনিকভ

4
+1, এটি আপনার এবং হারুনের পরামর্শ উভয়ই দিয়ে কাজ করেছে । (বা আরও স্পষ্টভাবে, এটি অতীত হয়ে গেছে এবং অন্যান্য হাইবারনেট 4 সমস্যার মধ্যে চলে গেছে run পি) উপায় দ্বারা, স্প্রিং 3.1 আরসিতে আর নেই (ডিসেম্বর 2011 এ প্রথম জিএ প্রকাশিত)।
জোনিক

thx @gkamal। হাইবারনেট 3 এ ডাউন-ভার্সন করা আমার পক্ষে কাজ করেছে। সমাধান: আমি হাইবারনেট-entitymanager এবং হাইবারনেট কোর ব্যবহার করা হয়, উভয় সংস্করণ দেখতে 3.6.10.Final mvnrepository.com/search.html?query=hibernate-entitymanager
Adrien হউন

8

এনটোটেশনসেশনফ্যাক্টরিবিয়ানকে হাইবারনেট 4-এ আপডেট করে নিখুঁত কাজ করে। আপনার লেনদেনের ব্যবস্থাপনার হাইবারনেট 4-এও নির্দেশ করে তা নিশ্চিত করুন

<bean id="sessionFactory"
 class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
 <property name="dataSource" ref="dataSource"></property>
 <property name="packagesToScan" value="PACKAGE_NAME"></property>
 <property name="hibernateProperties">
    <props>
        <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
    </props>
 </property>    
</bean>

<bean id="transactionManager" 
  class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

0

সত্যিই একটি সাধারণ সমস্যা যা একই ত্রুটির কারণ ঘটায় তা হ'ল পমের হাইবারনেট সংস্করণ এবং (স্প্রিং কনফিগারেশন) স্প্রিং কনফিগারেশনে উল্লিখিত সংস্করণটির মধ্যে একটি মেলে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.