该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-25
new IKAnalyzer();
jdk5.0 jdk6.0下都报一个错 java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) Exception in thread "main" |
|
返回顶楼 | |
发表时间:2009-07-25
什么问题啊,才下载下来的jar包,才新建的工程都报这个错,还未解决,编译器版本都改了
|
|
返回顶楼 | |
发表时间:2009-07-25
sunjun 写道 new IKAnalyzer();
jdk5.0 jdk6.0下都报一个错 java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) Exception in thread "main" 你是不是用的是Eclipse里面的jdk版本不多啊。别急,排查一下系统环境吧,包括你是不是装了oracle之后,默认jdk的路径被改了。。。。 从错误上看,就是版本不支持造成的 |
|
返回顶楼 | |
发表时间:2009-07-27
linliangyi2007 写道 sunjun 写道 new IKAnalyzer();
jdk5.0 jdk6.0下都报一个错 java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) Exception in thread "main" 你是不是用的是Eclipse里面的jdk版本不多啊。别急,排查一下系统环境吧,包括你是不是装了oracle之后,默认jdk的路径被改了。。。。 从错误上看,就是版本不支持造成的 我也遇到同样的问题.我是在Eclipse里做的,后来发现用的是JDK5,改成JDK6,重编译一下,就行了! |
|
返回顶楼 | |
发表时间:2009-07-27
以下我是写的测试IK分词的性能,请楼主指正.
IKAnalyzer analyzer = new IKAnalyzer(); String fileContent = "IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 "; StringReader reader = new StringReader(fileContent); long startTime = System.currentTimeMillis(); //开始时间 TokenStream ts = analyzer.tokenStream("*", reader); Token t = null; while ((t = ts.next()) != null) { System.out.print(t.termText() + "|"); } System.out.println(""); long endTime = System.currentTimeMillis(); //结束时间 System.out.println("IK分词耗时" + new Float((endTime - startTime)) / 1000 + "秒!"); 测试结果是: ik|analyzer|是|一个|一|个|开源|的|基于|java|语言|开发|的|轻量级|量级|的|中文|分词|工具包|工具|从|2006|年|12|月|推出|1.0|版|开始|ikanalyzer|已经|推出|出了|3|个大|个|版本|最初|它是|以|开源|项目|luence|为|应用|主体|的|结合|词典|分词|和|文法|分析|算法|的|中文|分词|词组|组件|新版本|新版|版本|的|ik|analyzer|3.0|则|发展为|发展|面向|java|的|公用|分词|词组|组件|独立|立于|lucene|项目|同时|提供|了|对|lucene|的|默认|优化|实现| IK分词耗时0.812秒! 多次测试都接近这个值,数数这里也没有多少字,怎么会耗时接近1秒的? 期待楼主指点!谢谢! |
|
返回顶楼 | |
发表时间:2009-07-27
rongxh7 写道 以下我是写的测试IK分词的性能,请楼主指正.
IKAnalyzer analyzer = new IKAnalyzer(); String fileContent = "IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 "; StringReader reader = new StringReader(fileContent); long startTime = System.currentTimeMillis(); //开始时间 TokenStream ts = analyzer.tokenStream("*", reader); Token t = null; while ((t = ts.next()) != null) { System.out.print(t.termText() + "|"); } System.out.println(""); long endTime = System.currentTimeMillis(); //结束时间 System.out.println("IK分词耗时" + new Float((endTime - startTime)) / 1000 + "秒!"); 测试结果是: ik|analyzer|是|一个|一|个|开源|的|基于|java|语言|开发|的|轻量级|量级|的|中文|分词|工具包|工具|从|2006|年|12|月|推出|1.0|版|开始|ikanalyzer|已经|推出|出了|3|个大|个|版本|最初|它是|以|开源|项目|luence|为|应用|主体|的|结合|词典|分词|和|文法|分析|算法|的|中文|分词|词组|组件|新版本|新版|版本|的|ik|analyzer|3.0|则|发展为|发展|面向|java|的|公用|分词|词组|组件|独立|立于|lucene|项目|同时|提供|了|对|lucene|的|默认|优化|实现| IK分词耗时0.812秒! 多次测试都接近这个值,数数这里也没有多少字,怎么会耗时接近1秒的? 期待楼主指点!谢谢! 你的测试有两个问题,第一,你把词典加载初始化的时间算在分词时间内了;第二,你使用了System.out.print()输出分词结果的时候,打印也是很耗时间的。;第三,建议你把测试用的文字使用for循环累加100次后,再做测试,这样的结果更准确。 一下是我自己的性能测试代码: String testString = ""; for (int i = 0; i <300; i++) { testString += "xxxx此处忽略4000字的文章"; } System.out.println("Length = " + testString.length()); IKSegmentation ikSeg = new IKSegmentation(new StringReader(testString)); try { Thread.sleep(5000); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } long begin = System.currentTimeMillis(); try { while( ikSeg.next()!= null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } long end = System.currentTimeMillis(); System.out.println("耗时 : " + (end - begin) + "ms"); System.out.println("***************"); 这里我需要得出的是算法本身对速度的影响,就必须排除字典加载和输出的时间消耗。 |
|
返回顶楼 | |
发表时间:2009-07-27
linliangyi2007 写道 rongxh7 写道 以下我是写的测试IK分词的性能,请楼主指正.
IKAnalyzer analyzer = new IKAnalyzer(); String fileContent = "IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 "; StringReader reader = new StringReader(fileContent); long startTime = System.currentTimeMillis(); //开始时间 TokenStream ts = analyzer.tokenStream("*", reader); Token t = null; while ((t = ts.next()) != null) { System.out.print(t.termText() + "|"); } System.out.println(""); long endTime = System.currentTimeMillis(); //结束时间 System.out.println("IK分词耗时" + new Float((endTime - startTime)) / 1000 + "秒!"); 测试结果是: ik|analyzer|是|一个|一|个|开源|的|基于|java|语言|开发|的|轻量级|量级|的|中文|分词|工具包|工具|从|2006|年|12|月|推出|1.0|版|开始|ikanalyzer|已经|推出|出了|3|个大|个|版本|最初|它是|以|开源|项目|luence|为|应用|主体|的|结合|词典|分词|和|文法|分析|算法|的|中文|分词|词组|组件|新版本|新版|版本|的|ik|analyzer|3.0|则|发展为|发展|面向|java|的|公用|分词|词组|组件|独立|立于|lucene|项目|同时|提供|了|对|lucene|的|默认|优化|实现| IK分词耗时0.812秒! 多次测试都接近这个值,数数这里也没有多少字,怎么会耗时接近1秒的? 期待楼主指点!谢谢! 你的测试有两个问题,第一,你把词典加载初始化的时间算在分词时间内了;第二,你使用了System.out.print()输出分词结果的时候,打印也是很耗时间的。;第三,建议你把测试用的文字使用for循环累加100次后,再做测试,这样的结果更准确。 一下是我自己的性能测试代码: String testString = ""; for (int i = 0; i <300; i++) { testString += "xxxx此处忽略4000字的文章"; } System.out.println("Length = " + testString.length()); IKSegmentation ikSeg = new IKSegmentation(new StringReader(testString)); try { Thread.sleep(5000); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } long begin = System.currentTimeMillis(); try { while( ikSeg.next()!= null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } long end = System.currentTimeMillis(); System.out.println("耗时 : " + (end - begin) + "ms"); System.out.println("***************"); 这里我需要得出的是算法本身对速度的影响,就必须排除字典加载和输出的时间消耗。 楼主能对 string=“1/++” 或者string ="xxxx1/++" 分词吗? 这是一个bug吗? java.lang.IllegalArgumentException: length < 0 at org.wltea.analyzer.Lexeme.<init>(Lexeme.java:37) at org.wltea.analyzer.seg.QuantifierSegmenter.outputNumLexeme(QuantifierSegmenter.java:507) at org.wltea.analyzer.seg.QuantifierSegmenter.processNumber(QuantifierSegmenter.java:186) at org.wltea.analyzer.seg.QuantifierSegmenter.nextLexeme(QuantifierSegmenter.java:104) at org.wltea.analyzer.IKSegmentation.next(IKSegmentation.java:70) at org.wltea.analyzer.lucene.IKTokenizer.next(IKTokenizer.java:38) at org.apache.lucene.analysis.TokenStream.next(TokenStream.java:91) |
|
返回顶楼 | |
发表时间:2009-07-27
引用 楼主能对 string=“1/++” 或者string ="xxxx1/++" 分词吗? 这是一个bug吗? java.lang.IllegalArgumentException: length < 0 at org.wltea.analyzer.Lexeme.<init>(Lexeme.java:37) at org.wltea.analyzer.seg.QuantifierSegmenter.outputNumLexeme(QuantifierSegmenter.java:507) at org.wltea.analyzer.seg.QuantifierSegmenter.processNumber(QuantifierSegmenter.java:186) at org.wltea.analyzer.seg.QuantifierSegmenter.nextLexeme(QuantifierSegmenter.java:104) at org.wltea.analyzer.IKSegmentation.next(IKSegmentation.java:70) at org.wltea.analyzer.lucene.IKTokenizer.next(IKTokenizer.java:38) at org.apache.lucene.analysis.TokenStream.next(TokenStream.java:91) 非常感谢,这确实是个bug,会在下版本中修订,应该8月初就能推出 |
|
返回顶楼 | |
发表时间:2009-07-27
我把源代码下载下来自己在JDK5。0的环境中编译了一下,就好了
|
|
返回顶楼 | |
发表时间:2009-07-27
sunjun 写道 我把源代码下载下来自己在JDK5。0的环境中编译了一下,就好了
直接编译源码是最好的方式,还能学习和修改,这也是开源的目的 |
|
返回顶楼 | |