मैं opencsv का उपयोग प्रोजेक्ट जो Java मॉड्यूल सिस्टम का उपयोग करते हुए Java 14 के साथ निर्मित है। तो इसमें एक मॉड्यूल-info.java फ़ाइल है।

Opencsv में एक विधि के लिए एक कॉल ठीक काम करता है जब इसे एक इकाई परीक्षण से शुरू किया जाता है, लेकिन Main.main() विधि से शुरू होने पर अपवाद फेंकता है। अगर मैं मॉड्यूल-info.java फ़ाइल को हटा देता हूं, तो विधि दोनों मामलों में ठीक काम करती है।

मॉड्यूल-जानकारी फ़ाइल सरल है, लेकिन शायद गलत है:

module opencsvDemo {
    requires opencsv;
    opens demo;
}

Main.main() से चलने पर, मुझे मिलता है

Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Date
    at commons.beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.registerOther(ConvertUtilsBean.java:730)
    at commons.beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.deregister(ConvertUtilsBean.java:602)
    at commons.beanutils@1.9.4/org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:161)
    at opencsv@5.2/com.opencsv.bean.ConverterPrimitiveTypes.<init>(ConverterPrimitiveTypes.java:88)
    at opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.determineConverter(AbstractMappingStrategy.java:739)
    at opencsv@5.2/com.opencsv.bean.HeaderColumnNameMappingStrategy.loadAnnotatedFieldMap(HeaderColumnNameMappingStrategy.java:155)
    at opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.loadFieldMap(AbstractMappingStrategy.java:405)
    at opencsv@5.2/com.opencsv.bean.AbstractMappingStrategy.setType(AbstractMappingStrategy.java:343)
    at opencsv@5.2/com.opencsv.bean.util.OpencsvUtils.determineMappingStrategy(OpencsvUtils.java:77)
    at opencsv@5.2/com.opencsv.bean.CsvToBeanBuilder.build(CsvToBeanBuilder.java:210)
    at opencsvDemo/demo.CsvGetter.get(CsvGetter.java:23)
    at opencsvDemo/demo.Main.main(Main.java:13)

क्या मेरे मॉड्यूल-info.java फ़ाइल में त्रुटि है, या मुझे कहीं और देखना चाहिए?

2
Helge 10 अक्टूबर 2020, 15:41

1 उत्तर

सबसे बढ़िया उत्तर

आप प्रयोग करके देख सकते हैं

requires java.sql;

अपने मॉड्यूल डिस्क्रिप्टर में यह सुनिश्चित करने के लिए कि अपेक्षित वर्ग वाले मॉड्यूल को सही ढंग से हल किया गया है।

यदि कोड उस डिस्क्रिप्टर के बिना संकलित किया गया है, तो उसके लिए एक और मॉड्यूल जिम्मेदार होना चाहिए। आपको इसे पहचानना होगा और तय करना होगा कि आगे किस रास्ते को चुना जाना है। यह आपकी परियोजना की निर्भरता के कारण एक ही पैकेज के साथ स्वचालित मॉड्यूल लाने के कारण हो सकता है, जो आगे एक विभाजित पैकेज समस्या का कारण बन सकता है। इस मामले में, जावा अपग्रेड के पक्ष में लाइब्रेरी अपडेट आदि की तलाश में मदद मिल सकती है।

1
Naman 10 अक्टूबर 2020, 17:47