2015-04-17 24 views
6

Sto tentando di analizzare un file CSV con Coldfusion e una libreria Java. Ho trovato alcuni esempi ma sembra che ColdFusion non riesca a trovare il Jar-File.ColdFusion/Classe Java non trovata Eccezione

Questo è il mio codice:

<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> 

e questo è l'ErrorMessage:

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...... 

Sto usando la opencsv Library. il file jar si trova nella seguente cartella:

wwwroot/WEB-INF/lib

ho anche riavviato il server più volte.

Grazie per il vostro aiuto!

risposta

2

Ho scaricato il file jar opencsv e sembra che si stia riferendo in modo errato.

Invece di questo:

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

Prova questa:

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

stavo guardando l'ultima versione, 3.3, ma suppongo che non è cambiato.

Dai commenti (la mia ipotesi era corretta)

Come Leigh ha sottolineato nei commenti, le versioni precedenti della libreria opencsv usato un nome di un pacchetto diverso rispetto alla versione più recente fa. Vecchie versioni utilizzate au.com.bytecode.opencsv ma le nuove versioni utilizzano com.opencsv.

+3

@noah - Sospetto che Miguel-F abbia colpito il chiodo sulla testa. Guardando all'origine, le versioni precedenti (2.2 ad esempio) utilizzavano un nome di pacchetto diverso, ad esempio "au.com.bytecode.opencsv". In [versioni più recenti] (http://sourceforge.net/p/opencsv/source/ci/release-3.2/tree/examples/AddressExample.java#l1) il nome del pacchetto è stato cambiato in 'com.opencsv'. Probabilmente stai usando uno dei nuovi jar, ma con il vecchio nome del pacchetto. Quindi perché non è stato trovato. Quanto sopra dovrebbe risolvere il problema. – Leigh

+0

Come eseguire lo stesso snippet in "ram: ///"? Sono stato bloccato con esso. Sembra che fileReader non possa elaborare il percorso in memoria. – 84RR1573R

Problemi correlati