2015-04-17 4 views
6

Я пытаюсь проанализировать файл CSV с Coldfusion и JavaLibrary. Я нашел несколько примеров, но кажется, что ColdFusion не может найти Jar-File.ColdFusion/Java Класс не найден Исключение

Это мой код:

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

и это 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...... 

Я использую opencsv Library. Jar Файл находится в следующей папке:

Wwwroot/WEB-INF/Библиотека

Я также повторил старт несколько раз Server.

Благодарим за помощь!

ответ

2

Я загрузил файл opencsv jar, и похоже, что вы можете ссылаться на него неправильно.

Вместо этого:

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

Попробуйте это:

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

Я смотрел на последнюю версию, 3.3, но я полагаю, что не изменилось.

Из комментариев (мое предположение было неверным)

Как Leigh отметил в комментариях, более старые версии библиотеки opencsv используется другое название пакета, чем последняя версия делает. В старых версиях используется au.com.bytecode.opencsv, но в новых версиях используется com.opencsv.

+3

@noah - Подозреваю, что Мигель-F ударил ноготь по голове. Если посмотреть на источник, более старые версии (например, 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

Как запустить такой же фрагмент в "ram: ///"? Я застрял в этом. Похоже, fileReader не может обрабатывать путь в памяти. – 84RR1573R

Смежные вопросы