- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Duke 进行记录链接,在基本测试中,我从 CSVReader 收到此异常 java.lang.ArrayIndexOutOfBoundsException: 1000。
这是我的 Java 类:
Configuration config = ConfigLoader.load("resources/dukeConfiguration.xml");
Processor proc = new Processor(config);
proc.addMatchListener(new PrintMatchListener(true, true, true, false,
config.getProperties(),
true));
proc.link();
proc.close();
这是配置文件:
<duke>
<schema>
<threshold>0.7</threshold>
<property type="id">
<name>ID</name>
</property>
<property>
<name>TITLE</name>
<comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator>
<low>0.09</low>
<high>0.93</high>
</property>
<property>
<name>ARTIST</name>
<comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator>
<low>0.04</low>
<high>0.73</high>
</property>
</schema>
<group>
<jdbc>
<param name="driver-class" value="com.mysql.jdbc.Driver" />
<param name="connection-string" value="jdbc:mysql://localhost:3306/digitalmusic" />
<param name="user-name" value="root" />
<param name="password" value="root" />
<param name="query" value="select * from inventory" />
<column name="idsong" property="ID" />
<column name="title" property="TITLE" />
<column name="artist" property="ARTIST" />
</jdbc>
</group>
<group>
<csv>
<param name="input-file" value="/home/mongo.csv" />
<param name="header-line" value="false" />
<column name="1" property="ID" />
<column name="2" property="TITLE" />
<column name="3" property="ARTIST" />
</csv>
</group>
</duke>
有人知道问题出在哪里吗?
堆栈跟踪:
Records: 0
Records: 40000
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1000
at no.priv.garshol.duke.utils.CSVReader.next(CSVReader.java:70)
at no.priv.garshol.duke.datasources.CSVDataSource$CSVRecordIterator.findNextRecord(CSVDataSource.java:170)
at no.priv.garshol.duke.datasources.CSVDataSource$CSVRecordIterator.next(CSVDataSource.java:198)
at no.priv.garshol.duke.datasources.CSVDataSource$CSVRecordIterator.next(CSVDataSource.java:111)
at no.priv.garshol.duke.Processor.linkRecords(Processor.java:362)
at no.priv.garshol.duke.Processor.link(Processor.java:319)
at no.priv.garshol.duke.Processor.link(Processor.java:298)
at no.priv.garshol.duke.Processor.link(Processor.java:285)
at duke.DukeCollecting.main(DukeCollecting.java:20)
最佳答案
好的,这就是你的问题。
根据latest source posted @ GitHub ,当您实例化一个新的 CSVReader
时,会发生以下情况:
public CSVReader(Reader in, int buflen, String file) throws IOException {
this.buf = new char[buflen];
this.pos = 0;
this.len = in.read(buf, 0, buf.length);
this.tmp = new String[1000];
this.in = in;
this.separator = ','; // default
this.file = file;
}
根据您的堆栈跟踪,错误发生在该 block 中:
if (escaped_quote)
tmp[colno++] = unescape(new String(buf, prev + 1, pos - prev - 1));
else
tmp[colno++] = new String(buf, prev + 1, pos - prev - 1);
问题在于 CSVReader colno
比之前分配的数组容量 1000
更大,因此生成了 java.lang. lang.ArrayIndexOutOfBoundsException
恕我直言,这些是您的选择:
选项 1:获取源代码( fork 项目),增加 tmp
缓冲区,直到程序运行无错误并重新编译;或
选项 2:检查 GitHub 项目页面,查看是否存在与此问题相关的任何 Unresolved 问题(或仅打开一个问题),并确定您的项目中是否存在任何格式错误的信息。可能导致数组溢出
的文件。
除非您赶时间,否则我推荐选项 2。
祝你好运!
关于java - Duke CSVReader ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667175/
这个问题已经有答案了: How can I avoid ArrayIndexOutOfBoundsException or IndexOutOfBoundsException? [duplicate]
这个问题在这里已经有了答案: Including all the jars in a directory within the Java classpath (25 个答案) 关闭 8 年前。 当我
我想在 netbeans.for 中设置 duke 辅导项目,我有以下内容 配置-jdk8、netbeans 8.0.2、glassfish 4.1、apache-maven-3.3.3 我的 gla
我是 Java EE 的新手,所以阅读 Java EE 6 教程。我想检查完整的应用程序,即教程中提到的杜克书店、辅导和森林案例研究。但是我在 glassfish 安装目录中看不到 javaee-tu
我试图让 Java 打开一个 CSV 文件(该文件保存在与 Java 项目相同的文件夹中)并解析其内容。我已在代码中包含文件路径,但当我运行该程序时,它表示无法访问该文件。 FileResource
我可以在哪里或如何下载 dukes-age sample ?显然,它应该可以从 Maven 获得: From the File menu, select New Project. Under Cate
我是一名优秀的程序员,十分优秀!