2015-04-17 33 views
6

Próbuję przetworzyć plik CSV z Coldfusion i biblioteką JavaLibrary. Znalazłem kilka przykładów, ale wygląda na to, że ColdFusion nie może znaleźć pliku Jar.Nie znaleziono klasy ColdFusion/Java Wyjątek

To jest mój kod:

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

i to jest 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...... 

Używam opencsv Library. słoika plik znajduje się w następującym folderze:

wwwroot/WEB-INF/lib

ja również wznowiona z serwera wiele razy.

Dzięki za pomoc!

Odpowiedz

2

Pobrałem plik JAR OpenSc i wygląda na to, że nie powołujesz się na niego niepoprawnie.

Zamiast tego:

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

Spróbuj tego:

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

Szukałem w najnowszej wersji 3.3, ale zakładam, że nie uległa zmianie.

Od komentarzach (moje założenie było błędne)

Jak Leigh zauważył w komentarzach, starsze wersje biblioteki opencsv stosować inną nazwę pakietu niż najnowsza wersja robi. Stare wersje używane au.com.bytecode.opencsv, ale nowe wersje używają com.opencsv.

+3

@noah - Podejrzewam, że Miguel-F uderzył w gwóźdź w głowę. Patrząc na źródło, starsze wersje (na przykład 2.2) używały innej nazwy pakietu, np. 'Au.com.bytecode.opencsv'. W [nowszych wersjach] (http://sourceforge.net/p/opencsv/source/ci/release-3.2/tree/examples/AddressExample.java#l1) nazwa pakietu została zmieniona na 'com.opencsv'. Prawdopodobnie używasz jednego z nowszych słoików, ale ze starą nazwą pakietu. Z tego powodu nie można go znaleźć. Powyższe powinno rozwiązać problem. – Leigh

+0

Jak uruchomić ten sam fragment w "ram: ///"? Utknąłem z tym. Wydaje się, że fileReader nie może przetworzyć ścieżki w pamięci. – 84RR1573R