Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java.lang.NoSuchFieldException: version.number #298

Closed
dragonpic opened this issue Jul 2, 2016 · 9 comments
Closed

java.lang.NoSuchFieldException: version.number #298

dragonpic opened this issue Jul 2, 2016 · 9 comments

Comments

@dragonpic
Copy link

我下载了 ansj_seg-5.0.0-all-in-one.jar 和 tree_split-1.4.jar 两个包,加载进我的一个scala工程,然后调用println(ToAnalysis.parse(inputString))进行测试,得到以下异常的运行log,但是结果可以正常输出,请问这是什么原因啊,我的工程不是maven也不是sbt,就是个简单的scala工程

java.lang.NoSuchFieldException: version.number
at java.lang.Class.getField(Class.java:1695)
at org.ansj.util.MyStaticValue.(MyStaticValue.java:121)
at org.ansj.library.UserDefineLibrary.initUserLibrary(UserDefineLibrary.java:106)
at org.ansj.library.UserDefineLibrary.(UserDefineLibrary.java:42)
at org.ansj.splitWord.Analysis.(Analysis.java:46)
at org.ansj.splitWord.analysis.ToAnalysis.(ToAnalysis.java:88)
at org.ansj.splitWord.analysis.ToAnalysis.parse(ToAnalysis.java:101)
at com.bigdata.SemanticAnalysis.SemanticAnalysis$.main(SemanticAnalysis.scala:48)
at com.bigdata.SemanticAnalysis.SemanticAnalysis.main(SemanticAnalysis.scala)
java.lang.NoSuchFieldException: copyright.string
at java.lang.Class.getField(Class.java:1695)
at org.ansj.util.MyStaticValue.(MyStaticValue.java:121)
at org.ansj.library.UserDefineLibrary.initUserLibrary(UserDefineLibrary.java:106)
at org.ansj.library.UserDefineLibrary.(UserDefineLibrary.java:42)
at org.ansj.splitWord.Analysis.(Analysis.java:46)
at org.ansj.splitWord.analysis.ToAnalysis.(ToAnalysis.java:88)
at org.ansj.splitWord.analysis.ToAnalysis.parse(ToAnalysis.java:101)
at com.bigdata.SemanticAnalysis.SemanticAnalysis$.main(SemanticAnalysis.scala:48)
at com.bigdata.SemanticAnalysis.SemanticAnalysis.main(SemanticAnalysis.scala)
java.lang.NoSuchFieldException: osgi.version.number
at java.lang.Class.getField(Class.java:1695)
at org.ansj.util.MyStaticValue.(MyStaticValue.java:121)
at org.ansj.library.UserDefineLibrary.initUserLibrary(UserDefineLibrary.java:106)
at org.ansj.library.UserDefineLibrary.(UserDefineLibrary.java:42)
at org.ansj.splitWord.Analysis.(Analysis.java:46)
at org.ansj.splitWord.analysis.ToAnalysis.(ToAnalysis.java:88)
at org.ansj.splitWord.analysis.ToAnalysis.parse(ToAnalysis.java:101)
at com.bigdata.SemanticAnalysis.SemanticAnalysis$.main(SemanticAnalysis.scala:48)
at com.bigdata.SemanticAnalysis.SemanticAnalysis.main(SemanticAnalysis.scala)
java.lang.NoSuchFieldException: maven.version.number
at java.lang.Class.getField(Class.java:1695)
at org.ansj.util.MyStaticValue.(MyStaticValue.java:121)
at org.ansj.library.UserDefineLibrary.initUserLibrary(UserDefineLibrary.java:106)
at org.ansj.library.UserDefineLibrary.(UserDefineLibrary.java:42)
at org.ansj.splitWord.Analysis.(Analysis.java:46)
at org.ansj.splitWord.analysis.ToAnalysis.(ToAnalysis.java:88)
at org.ansj.splitWord.analysis.ToAnalysis.parse(ToAnalysis.java:101)
at com.bigdata.SemanticAnalysis.SemanticAnalysis$.main(SemanticAnalysis.scala:48)
at com.bigdata.SemanticAnalysis.SemanticAnalysis.main(SemanticAnalysis.scala)
七月 02, 2016 3:12:10 下午 DICLOG info
信息: init user userLibrary ok path is : F:\ProjectBuild\Intellij\Workplace\SparkApplication\SemanticAnalysis\library\default.dic
七月 02, 2016 3:12:10 下午 DICLOG info
信息: init ambiguityLibrary ok!
七月 02, 2016 3:12:10 下午 DICLOG info
信息: init core library ok use time :291
七月 02, 2016 3:12:10 下午 DICLOG info
信息: init ngram ok use time :271
Disconnected from the target VM, address: '127.0.0.1:61800', transport: 'socket'
南京市/ns,长江大桥/nz,,,是/v,很/d,雄伟/a,的/uj,,,so/en, ,wonderful/en

@ansjsun
Copy link
Member

ansjsun commented Jul 2, 2016

library.properties 发生了冲突。。

@dragonpic
Copy link
Author

但是我的工程中没有这个文件啊library.properties,这个配置是在哪做的啊,是不是之前有关于这样的问题,可以发个链接给我,我自己看

------------------ Original ------------------
From: "ansj"notifications@github.com;
Date: Sat, Jul 2, 2016 04:06 PM
To: "NLPchina/ansj_seg"ansj_seg@noreply.github.com;
Cc: "dragonpic"dongzhenlong@huaxunchina.cn; "Author"author@noreply.github.com;
Subject: Re: [NLPchina/ansj_seg] java.lang.NoSuchFieldException:version.number (#298)

library.properties 发生了冲突。。


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@shi-yuan
Copy link
Member

shi-yuan commented Jul 2, 2016

scala-library.jar 里有library.properties,包含了属性:version.number,maven.version.number,osgi.version.number,copyright.string

@dragonpic
Copy link
Author

我在工程中src 目录中加入了 library.properties,问题就解决了,看了源码,是因为默认去src下找library.properties,找不到再去搜索,貌似是这个意思

@shi-yuan
Copy link
Member

shi-yuan commented Jul 2, 2016

项目里有直接加载项目里的,否则根据依赖包的加载顺序,去依赖包里找,一旦找到就加载

@sunyonggang
Copy link

先赞一下,我也是普通的scala项目遇到这样的问题,然后参考 @dragonpic ,将ansj_library.properties 改名为 library.properties,这个项目中的测试可以运行,并且之前的报错信息没有了。
但我在下面使用maven构建的scala项目却不能像上面那样解决😪
还是需要看源码啊😼

@shi-yuan
Copy link
Member

shi-yuan commented Jul 8, 2016

使用最新版本并且使用配置文件ansj_library.properties

@sunyonggang
Copy link

问题基本知道是怎么回事了,接着上面 @shi-yuan 的说,libiary.properties是个不合适的名字,后面改为了ansj_library.properties之后基本可以解决问题

但是我为什么还是会发生一些问题呢?😓

  1. 打包的人要抓出去打一顿:我看了下 http://maven.nlpcn.org/ 中的 ansj_seg-5.0.0.jar 里面尽然是:
try {
            rb = ResourceBundle.getBundle("library");
        } catch (Exception var9) {
            try {
                File key = FileFinder.find("library.properties", 2);
                if(key != null && key.isFile()) {
                    rb = new PropertyResourceBundle(IOUtil.getReader(key.getAbsolutePath(), System.getProperty("file.encoding")));
                    LIBRARYLOG.info("load library not find in classPath ! i find it in " + key.getAbsolutePath() + " make sure it is your config!");
                }
            } catch (Exception var8) {
                LIBRARYLOG.warn("not find library.properties. and err " + var9.getMessage() + " i think it is a bug!");
            }
        }

这个对应的版本号还是5.0.0的啊,所以只要是使用maven去下载ansj_seg-5.0.0.jar 基本不行,至于那个ansj_seg-5.0.0-all-in one.jar不知道会不会出问题,可以尝试下。
2. 查看github上面的最新代码,可以看到:MyStaticValue.java

ResourceBundle rb = null;
        try {
            rb = ResourceBundle.getBundle("ansj_library");
        } catch (Exception e) {
            try {
                File find = FileFinder.find("ansj_library.properties", 2);
                if (find != null && find.isFile()) {
                    rb = new PropertyResourceBundle(IOUtil.getReader(find.getAbsolutePath(), System.getProperty("file.encoding")));
                    LIBRARYLOG.info("load ansj_library not find in classPath ! i find it in " + find.getAbsolutePath() + " make sure it is your config!");
                }
            } catch (Exception e1) {
                LIBRARYLOG.warn("not find ansj_library.properties. and err " + e.getMessage() + " i think it is a bug!");
            }
}

下载最新的代码,自己打包,使用ansj_seg-5.0.0-all-in one.jar基本可以解决问题。
🐤

@ansjsun
Copy link
Member

ansjsun commented Jul 11, 2016

是的会在下一个版本中修复

发自我的 iPhone

在 2016年7月11日,11:48,sunyonggang notifications@github.com 写道:

问题基本知道是怎么回事了,接着上面 @shi-yuan 的说,libiary.properties是个不合适的名字,后面改为了ansj_library.properties之后基本可以解决问题

但是我为什么还是会发生一些问题呢?😓

打包的人要抓出去打一顿:我看了下 http://maven.nlpcn.org/ 中的 ansj_seg-5.0.0.jar 里面尽然是:
try {
rb = ResourceBundle.getBundle("library");
} catch (Exception var9) {
try {
File key = FileFinder.find("library.properties", 2);
if(key != null && key.isFile()) {
rb = new PropertyResourceBundle(IOUtil.getReader(key.getAbsolutePath(), System.getProperty("file.encoding")));
LIBRARYLOG.info("load library not find in classPath ! i find it in " + key.getAbsolutePath() + " make sure it is your config!");
}
} catch (Exception var8) {
LIBRARYLOG.warn("not find library.properties. and err " + var9.getMessage() + " i think it is a bug!");
}
}
这个对应的版本号还是5.0.0的啊,所以只要是使用maven去下载ansj_seg-5.0.0.jar 基本不行,至于那个ansj_seg-5.0.0-all-in one.jar不知道会不会出问题,可以尝试下。
2. 查看github上面的最新代码,可以看到:MyStaticValue.java

ResourceBundle rb = null;
try {
rb = ResourceBundle.getBundle("ansj_library");
} catch (Exception e) {
try {
File find = FileFinder.find("ansj_library.properties", 2);
if (find != null && find.isFile()) {
rb = new PropertyResourceBundle(IOUtil.getReader(find.getAbsolutePath(), System.getProperty("file.encoding")));
LIBRARYLOG.info("load ansj_library not find in classPath ! i find it in " + find.getAbsolutePath() + " make sure it is your config!");
}
} catch (Exception e1) {
LIBRARYLOG.warn("not find ansj_library.properties. and err " + e.getMessage() + " i think it is a bug!");
}
}
下载最新的代码,自己打包,使用ansj_seg-5.0.0-all-in one.jar基本可以解决问题。
🐤


You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants