2015-04-17 13 views
6

मैं कोल्डफ्यूजन और जावा लाइब्रेरी के साथ एक CSV फ़ाइल को पार्स करने का प्रयास कर रहा हूं। मुझे कुछ उदाहरण मिले लेकिन ऐसा लगता है कि कोल्डफ्यूजन जार-फाइल नहीं ढूंढ सकता है।कोल्डफ्यूजन/जावा क्लास नहीं मिला अपवाद

यह मेरा कोड है:

<cfset t01= getTickCount()> 
    <cfscript> 
     fileReader = createobject("java","java.io.FileReader"); 
     fileReader.init("C:\Dev\files.csv"); 
     csvReader = createObject("java","au.com.bytecode.opencsv.CSVReader"); 
     csvReader.init(fileReader, ","); 
    </cfscript> 

<cfset t02= getTickCount()> 
<cfset ArrayData = csvReader.readAll()> 
<cfset t03= getTickCount()> 

<cfoutput> 
    Process Data: #t02 - t01# ms 
    Display Dump: #t03 - t02# ms 
    <cfdump var="ArrayData"><cfabort /> 
</cfoutput> 

और इस त्रुटिसंदेश है:

java.lang.ClassNotFoundException: au.com.bytecode.opencsv.CSVReader 
    at coldfusion.bootstrap.BootstrapClassLoader.loadClass(BootstrapClassLoader.java:235) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248).....more Stack blabla...... 

मैं opencsv Library उपयोग कर रहा हूँ। जार फ़ाइल निम्न फ़ोल्डर में है:

wwwroot/वेब-INF/lib

मैं भी सर्वर कई बार पुन: प्रारंभ।

आपकी मदद के लिए धन्यवाद!

उत्तर

2

मैंने ओपनसीवी जार फ़ाइल डाउनलोड की और ऐसा लगता है कि आप इसे गलत तरीके से संदर्भित कर रहे हैं।

इसके बजाय इस बात का

:

csvReader = createObject("java","au.com.bytecode.opencsv.CSVReader"); 

इस प्रयास करें:

csvReader = createObject("java","com.opencsv.CSVReader"); 

मैं नवीनतम संस्करण, 3.3 देख रहा था, लेकिन मुझे लगता है कि नहीं बदला है।

टिप्पणियों से (मेरे धारणा गलत थी)

के रूप में लेह टिप्पणी में कहा, opencsv पुस्तकालय के पुराने संस्करणों के भिन्न पैकेज नाम का नवीनतम संस्करण की तुलना में इस्तेमाल किया। पुराने संस्करण au.com.bytecode.opencsv का उपयोग करते थे लेकिन नए संस्करण com.opencsv का उपयोग करते हैं।

+3

@ नोहा - मुझे संदेह है कि मिगुएल-एफ ने सिर पर नाखून मारा। स्रोत को देखते हुए, पुराने संस्करण (उदाहरण के लिए 2.2) ने एक अलग पैकेज नाम यानी 'au.com.bytecode.opencsv' का उपयोग किया। [नए संस्करणों] में (http://sourceforge.net/p/opencsv/source/ci/release-3.2/tree/examples/AddressExample.java#l1) पैकेज का नाम 'com.opencsv' पर स्विच किया गया था। आप शायद नए जारों में से एक का उपयोग कर रहे हैं, लेकिन पुराने पैकेज नाम के साथ। इसलिए यह क्यों नहीं मिला है। उपर्युक्त समस्या को हल करना चाहिए। – Leigh

+0

"राम: ///" में एक ही स्निपेट कैसे चलाएं? मैं इसके साथ अटक गया था। लगता है फ़ाइल रीडर मेमोरी पथ को संसाधित नहीं कर सकता है। – 84RR1573R

संबंधित मुद्दे