找不到ColdFusion/Java类异常

noa*_*oah 6 java coldfusion classnotfoundexception opencsv

我试图用Coldfusion和JavaLibrary解析CSV文件.我找到了一些例子,但似乎ColdFusion找不到Jar-File.

这是我的代码:

<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>
Run Code Online (Sandbox Code Playgroud)

这是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......
Run Code Online (Sandbox Code Playgroud)

我正在使用opencsv库.Jar文件位于以下文件夹中:

wwwroot的/ WEB-INF/lib中

我也多次重启服务器.

谢谢你的帮助!

Mig*_*l-F 2

我下载了 opencsv jar 文件,看起来您可能错误地引用了它。

而不是这个:

csvReader = createObject("java","au.com.bytecode.opencsv.CSVReader");
Run Code Online (Sandbox Code Playgroud)

尝试这个:

csvReader = createObject("java","com.opencsv.CSVReader");
Run Code Online (Sandbox Code Playgroud)

我正在查看最新版本 3.3,但我认为这没有改变。

来自评论(我的假设是错误的)

正如 Leigh 在评论中指出的那样,旧版本的 opencsv 库使用了与最新版本不同的包名称。使用旧版本au.com.bytecode.opencsv,但新版本使用com.opencsv.

  • @noah - 我怀疑 Miguel-F 击中了要害。查看源代码,旧版本(例如 2.2)使用了不同的包名称,即“au.com.bytecode.opencsv”。在[较新版本](http://sourceforge.net/p/opencsv/source/ci/release-3.2/tree/examples/AddressExample.java#l1)中,包名称已切换为“com.opencsv”。您可能正在使用较新的 jar 之一,但使用旧的包名称。这就是为什么它没有被发现。以上应该可以解决问题。 (3认同)