使用ant能够运行编译的jar包,但换成java命令后就不能运行了

发布于 2021-11-12 12:49:56 字数 4167 浏览 843 评论 2

环境: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来运行写的程序,请求各位帮助啊



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一个人的旅程 2021-11-18 22:28:48

回复
明白了。。

冷弦 2021-11-17 07:32:52

引用来自“肖国颖”的答案

为什么用Xbootclasspath,用cp不行吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文