使用ant能够运行编译的jar包,但换成java命令后就不能运行了? 400 报错
环境:fedora 16 64位 、 ant
总述:使用ant能够运行编译的jar包,但换成java命令后就不能运行了,不甘心只能通过ant来运行写的程序,请求各位帮助
ant build.xml 中相关部分
<property name="lib_dir" value="/usr/share/java"/> <property name="lib_segmenter_dir" value="/home/Data/NLP/stanford-segmenter-2012-07-09"/> <property name="lib_parser_dir" value="/home/Data/NLP/stanford-parser-2012-07-09"/> 。。。。打包 <target name="build" depends="compile"> <jar jarfile="${native_jar}" basedir="${dest}"> <manifest> <attribute name="Built-By" value="${user.name}"/> <attribute name="Main-class" value="NativeUtil.testMain"/> </manifest> </jar> </target> 。。。运行 <target name="run" depends="build"> <java classname="NativeUtil.testMain"> <classpath> <path location="${native_jar}"></path> 程序jar包 </classpath> <classpath> 依赖 <fileset dir="${lib_dir}"> <include name="Ice.jar"/> </fileset> <fileset dir="${lib_segmenter_dir}"> <include name="seg.jar"/> </fileset> <fileset dir="${lib_parser_dir}"> <include name="stanford-parser.jar"/> <include name="stanford-parser-2012-07-09-models.jar"/> </fileset> </classpath> </java > </target>使用ant run 命令能够正常运行!
但是将直接用java来运行就出现了问题,我加载jar包使用的方式为-Xbootclasspath/a:
使用的完整命令为:
java -Xbootclasspath/a:/usr/share/java/Ice.jar:/home/Data/NLP/stanford-segmenter-2012-07-09/seg.jar:/home/Data/NLP/stanford-parser-2012-07-09/stanford-parser-2012-07-09-models.jar:/home/Data/NLP/stanford-parser-2012-07-09/stanford-parser.jar: -jar nlp_util_native分行显示
java -Xbootclasspath/a:/usr/share/java/Ice.jar:/home/Data/NLP/stanford- segmenter-2012-07-09/seg.jar:/home/Data/NLP/stanford-parser-2012-07-09 /stanford-parser-2012-07-09-models.jar:/home/Data/NLP/stanford-parser- 2012-07-09/stanford-parser.jar: -jar nlp_util_native
主要意思是通过-Xbootclasspath/a:加载四个依赖包 ,然后运行nlp_util_native但是总是不对
出现错误为:
serDictionary=/home/Data/NLP/stanford-segmenter-2012-07-09/data/dict-chris6.ser.gz sighanCorporaDict=/home/Data/NLP/stanford-segmenter-2012-07-09/data inputEncoding=UTF-8 sighanPostProcessing=true Exception in thread "main" java.lang.ExceptionInInitializerError at NativeUtil.testMain.main(Unknown Source) Caused by: java.lang.NullPointerException at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadStreamFromClasspath(AbstractSequenceClassifier.java:1468) at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifierNoExceptions(AbstractSequenceClassifier.java:1516) at NativeUtil.GeneralUtilParser.<clinit>(Unknown Source) ... 1 more其中
serDictionary=/home/Data/NLP/stanford-segmenter-2012-07-09/data/dict-chris6.ser.gz sighanCorporaDict=/home/Data/NLP/stanford-segmenter-2012-07-09/data inputEncoding=UTF-8 sighanPostProcessing=true
这部分是正确运行的,但就在这就出错了。通过ant运行,正确输出为:
[java] serDictionary=/home/Data/NLP/stanford-segmenter-2012-07-09/data/dict-chris6.ser.gz [java] sighanCorporaDict=/home/Data/NLP/stanford-segmenter- 2012-07-09/data [java] inputEncoding=UTF-8 [java] sighanPostProcessing=true [java] Loading classifier from /home/Data/NLP/stanford-segmenter- 2012-07-09/data/ctb.gz ... [java] Loading Chinese dictionaries from 1 files: [java] /home/Data/NLP/stanford-segmenter-2012-07-09/data/dict- chris6.ser.gz [java] [java] loading dictionaries from /home/Data/NLP/stanford-segmenter- 2012-07-09/data/dict-chris6.ser.gz...Done. Unique words in ChineseDictionary is: 423200 [java] done [14.6 sec].不知道为什么会出现这种怪异的事情?不甘心只能通过ant来运行写的程序,请求各位帮助啊
为什么用Xbootclasspath,用cp不行吗?######
用cp能运行了,非常感谢!
不过运行的不是jar包,而是jar包里面的类(NativeUtil.testMain)。要运行jar包(java -jar 的方法)还是要用Xbootclasspath加载依赖包的(用cp不行),这里不知什么就不行了。总之,能通过cp运行了,命令如下:
java -cp /home/Data/NLP/stanford-segmenter-2012-07-09/seg.jar: /home/Data/NLP/stanford-parser-2012-07-09/stanford-parser-2012-07-09- models.jar:/home/Data/NLP/stanford-parser-2012-07-09/stanford- parser.jar:.:./nlp_util_native NativeUtil.testMain
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。