【问题标题】:ColdFusion/Java Class not found Exception未找到 ColdFusion/Java 类异常
【发布时间】:2015-06-23 19:48:56
【问题描述】:

我正在尝试使用 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>

这是错误消息:

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

我还多次重新启动服务器。

感谢您的帮助!

【问题讨论】:

    标签: java coldfusion classnotfoundexception opencsv


    【解决方案1】:

    我下载了 opencsv jar 文件,看起来您可能引用不正确。

    而不是这个:

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

    试试这个:

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

    我查看的是最新版本 3.3,但我认为它没有改变。

    来自 cmets(我的假设不正确)

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

    【讨论】:

    • @noah - 我怀疑 Miguel-F 击中了头。查看源代码,旧版本(例如 2.2)使用了不同的包名称,即au.com.bytecode.opencsv。在newer versions 中,包名称已切换为com.opencsv。您可能正在使用较新的 jar 之一,但使用旧的包名称。因此,为什么它没有被发现。以上应该可以解决问题。
    • 如何在“ram:///”中运行同样的 sn-p?我被它困住了。似乎 fileReader 无法处理内存中的路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多